gpt4 book ai didi

android - 如果每个 ListView 有多个 TextView ,如何设置适配器?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:20:31 26 4
gpt4 key购买 nike

我的 ListView 中每个列表项都有多个 TextView。我相信我已经学会了编写一个正确的 getView 方法,但我不确定我是否可以使用 setAdapter 来调用该方法。

private static String[] project = {"proj1","proj2"};
private static String[] workRequests = {"requirement gathering", "design"};
private static String[] startDate = {"02/21/2012","07/15/2011"};
private static String[] status = {"WIP","DONE"};

ListView mListView;

public class MyDashboardActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mydashboard);

final LayoutInflater mInflater = LayoutInflater.from(this);
mListView = (ListView)findViewById(R.id.dashboardList);
mListView.setAdapter(
// How do I set the adapter?
);
}

public View getView(int position, View convertView, ViewGroup parent) {
System.out.println("enters");
if(convertView == null){
convertView = LayoutInflater.from(this).inflate(R.layout.mydashboard,null);
}

((TextView) convertView.findViewById(R.id.project)).setText(project[position]);
((TextView) convertView.findViewById(R.id.work_request)).setText(workRequests[position]);
((TextView) convertView.findViewById(R.id.start_date)).setText(startDate[position]);
((TextView) convertView.findViewById(R.id.status)).setText(status[position]);

return convertView;
}

这是 xml 布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/home_root"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<!-- Include Action Bar -->
<include layout="@layout/actionbar_layout" />

<ListView
android:id="@+id/dashboardList"
style="@style/LeftHeaderText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:background="@drawable/innerdashboard_bg"
android:textColor="@color/textColor" >

<TextView android:id="@+id/project" />

<TextView android:id="@+id/work_request" />

<TextView android:id="@+id/start_date" />

<TextView android:id="@+id/status" />

</ListView>

</LinearLayout>

我尝试了几种方法,但都没有用。谁能建议在这种情况下如何设置适配器?谢谢!

最佳答案

您需要实现自己的适配器。我的方法是还定义一个“代表” View 的对象。

下面是一个非常简单的示例,其中包含两个 TextViews 以满足您的需求。

表示 View 的对象(ListView 中的一行):

public class CustomObject {

private String prop1;
private String prop2;

public CustomObject(String prop1, String prop2) {
this.prop1 = prop1;
this.prop2 = prop2;
}

public String getProp1() {
return prop1;
}

public String getProp2() {
return prop2;
}
}

接下来是自定义适配器:

public class CustomAdapter extends BaseAdapter {

private LayoutInflater inflater;
private ArrayList<CustomObject> objects;

private class ViewHolder {
TextView textView1;
TextView textView2;
}

public CustomAdapter(Context context, ArrayList<CustomObject> objects) {
inflater = LayoutInflater.from(context);
this.objects = objects;
}

public int getCount() {
return objects.size();
}

public CustomObject getItem(int position) {
return objects.get(position);
}

public long getItemId(int position) {
return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if(convertView == null) {
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.your_view_layout, null);
holder.textView1 = (TextView) convertView.findViewById(R.id.id_textView1);
holder.textView2 = (TextView) convertView.findViewById(R.id.list_id_textView2);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.textView1.setText(objects.get(position).getprop1());
holder.textView2.setText(objects.get(position).getprop2());
return convertView;
}
}

现在您可以在 Activity 中定义和设置适配器:

ArrayList<CustomObject> objects = new ArrayList<CustomObject>();
CustomAdapter customAdapter = new CustomAdapter(this, objects);
listView.setAdapter(customAdapter);

现在您只需在对象列表中管理您的 CustomObject。当您想要对 ListView 进行重新修改时,不要忘记调用 customAdapter.notifyDataSetChanged()

关于android - 如果每个 ListView 有多个 TextView ,如何设置适配器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11106418/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com