Android – 动态gridview(多列绑定行)

我想在Android中实现gridview,它基本上由4列组成(它将与表相似)。

这基本上是分布在4列(name,qty,p1,p2)中的项目列表。 因此每行包含4列,对1个项目是唯一的。 因此,我需要一种方法将这4列绑定在一起,这样当我选择这4列中的任何位置时,将选择整行,同时返回’name’列作为文本ID。

有没有一种简单的方法可以做到这一点? 这是我目前的gridView代码:

XML布局:

  

动态内容的绑定:

 GridView gridview; static final String[] listItems = new String[] { "name","qty","p1","p2","itemname","5","100","1" }; gridview = (GridView)findViewById(R.id.gvShopCompleteList); ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, listItems); gridview.setAdapter(adapter); gridview.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView parent, View v,int position, long id) { Toast.makeText(getApplicationContext(), ((TextView) v).getText(), Toast.LENGTH_SHORT).show(); } }); 

最后,我想添加的另一个function是使标题只读,并突出显示与其他行不同的颜色。 任何帮助将在这里非常感激,我不必使用GridView,但希望尽可能保持通用的android外观(在我的应用程序中一致)。 谢谢。

我做了一些样品。 下面是行的布局文件R.layout.adapters_tablelikelistview

        

以及使用上面布局的Activity和适配器:

 public class TableLikeListView extends ListActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String[] data1 = new String[] { "Header1", "data1", "data2" }; String[] data2 = new String[] { "Header2", "data1", "data2" }; String[] data3 = new String[] { "Header3", "data1", "data2" }; String[] data4 = new String[] { "Header4", "data1", "data2" }; setListAdapter(new MyAdapter(this, R.layout.adapters_tablelikelistview, R.id.data1, data1, data2, data3, data4)); } private static class MyAdapter extends ArrayAdapter { private String[] data1, data2, data3, data4; public MyAdapter(Context context, int resource, int textViewResourceId, String[] data1, String[] data2, String[] data3, String[] data4) { super(context, resource, textViewResourceId, data1); this.data1 = data1; this.data2 = data2; this.data3 = data3; this.data4 = data4; } @Override public View getView(int position, View convertView, ViewGroup parent) { View v = super.getView(position, convertView, parent); if (position == 0) { // header v.setBackgroundColor(Color.GREEN); } else { v.setBackgroundResource(android.R.drawable.list_selector_background); } TextView t1 = (TextView) v.findViewById(R.id.data1); t1.setText(data1[position]); TextView t2 = (TextView) v.findViewById(R.id.data2); t2.setText(data2[position]); TextView t3 = (TextView) v.findViewById(R.id.data3); t3.setText(data3[position]); TextView t4 = (TextView) v.findViewById(R.id.data4); t4.setText(data4[position]); return v; } @Override public boolean isEnabled(int position) { return position == 0 ? false : true; } } }