簡體   English   中英

如何在 View for BaseAdapter getView() 方法中使用 XML 設置布局

[英]How to set layout with XML in View for BaseAdapter getView() method

以下 Java 代碼(來自https://www.intertech.com/Blog/android-adapters-adapterviews/ )來自 getView(),Android Adapter 類的方法實現,它在 Java 中構建了一個視圖來填充項目在一個列表中。 我知道它是如何工作的,但同一個頁面說它可以使用 XML 文件構建,這對我來說很有意義,但我找不到任何示例。 我了解如何使用 XML 資源文件使用 setContentView() 設置 Activity 布局。 但是我將如何調用 XML 資源文件來在 getView() 方法中構建視圖?

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    if (convertView == null) {
        Context context = parent.getContext();
        LinearLayout view = new LinearLayout(context);
        view.setOrientation(LinearLayout.HORIZONTAL);
        view.addView(new CheckBox(context));
        TextView nameTextView = new TextView(context);
        nameTextView.setText(courses.get(position).getName());
        nameTextView.setPadding(0, 0, 10, 0);
        view.addView(nameTextView);
        TextView parTextView = new TextView(context);
        parTextView.setText(Integer.toString(courses.get(position).getPar()));
        view.addView(parTextView);
        return view;
    }
    return convertView;
}

像這樣

item_test.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        tools:text="name" />
</LinearLayout>

適配器

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    Holder holder; // use holder
    if (convertView == null) {
        convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_test, parent, false);
        holder = new Holder(convertView);
        convertView.setTag(holder);
    } else {
        holder = (Holder) convertView.getTag();
    }
    holder.name.setText("name");
    return convertView;
}

public class Holder {
    private TextView name;

    public Holder(View view) {
        name = view.findViewById(R.id.name);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM