在ListView多个阵列 [英] multiple arrays in a listview

查看:74
本文介绍了在ListView多个阵列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有关我的ListView,我希望能够内它显示多个textviews,每个TextView的显示与之相关联的特定阵列的项目。现在的问题是我有:

For my listview, I want to be able to display multiple textviews within it, with each textview displaying the items of a specific array associated with it. Right now is what I have:

public class GreatestHits extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, Array1));

    ListView lv = getListView();
    lv.setTextFilterEnabled(true);

    lv.setOnItemClickListener(new OnItemClickListener() {
      public void onItemClick(AdapterView<?> parent, View view,
          int position, long id) {
          String text = (String) ((TextView)view).getText();
}

    });

}
 static final String[] Array1 = new String[] {"Item1", "Item2"};
 static final String[] Array2 = new String[] {"Item1", "Item2"};
static final String[] Array3 = new String[] {"Item1", "Item2"};  

和XML为R.layout.list_item:

and the xml for R.layout.list_item:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:textSize="16sp"
android:id= "@+id/textView1" 
>

</TextView>

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:textSize="16sp" 
android:id= "@+id/textView2" 
>
</TextView>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:textSize="16sp" 
android:id= "@+id/textView3" 
>
</TextView>

我怎么会把阵列2和阵列3到code,因此可以在列表视图LV的textviews显示?

How would I put array 2 and array 3 into the code so it can be displayed in the textviews of listview lv?

推荐答案

ArrayAdapter只能从一个TextView的一个阵列显示数据。你将不得不通过扩展BaseAdapter自己给自己提供此功能。我不能在目前的Andr​​oid编译code,所以下面code是未经测试...但它至少应该给你的你可以做什么的指示。

ArrayAdapter can only display data from one array in one textview. You will have to provide this functionality yourself by extending BaseAdapter yourself. I can't compile android code at the moment, so the following code is untested... but it should at least give you an indication of what you can do.

public class TripleArrayAdapter extends BaseAdapter {
  private String[] array1, array2, array3;
  private LayoutInflater inflater;

  public TripleArrayAdapter(Context context, String[] a1, String[] a2, String[]a3) {
    array1 = a1;
    array2 = a2;
    array3 = a3;
    inflater = 
        (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  }

  @Override
  public int getCount() {
    return array1.length;
  }

  @Override
  public Object getItem(int position) {
    return null;
  }

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

  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    View currentView = convertView;

    if(currentView==null) {
      currentView = inflater.inflate(R.layout.list_item, parent, false);
    }

    TextView tView = (TextView)currentView.findViewById(R.id.textView1);
    tView.setText(array1[position]);

    tView = (TextView)currentView.findViewById(R.id.textView2);
    tView.setText(array2[position]);

    tView = (TextView)currentView.findViewById(R.id.textView3);
    tView.setText(array3[position]);

    return currentView;
  }
}

然后,要使用该适配器为您ListActivity的适配器,你刚才说

Then, to use this adapter as your ListActivity's adapter, you would just say

setListAdapter(new TripleArrayAdapter(this, Array1, Array2, Array3));

这篇关于在ListView多个阵列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆