2010-02-01 87 views
1

我很新的Android和我在管理列表視圖時遇到一些麻煩... 我生成一個ListView正常,但其中的所有項目有相同的ID,所以當我點擊他們中的任何一個,他們都做同樣的事情(這不是我期望的當然...)所有的ListView的項目不斷使用OnClick方法使OnClick方法無用

我從XML URL加載數據,解析它們SAX解析器。 這是我的適配器。我的「聆聽」包含由「& & &」分隔的6行2個字符串。 我再與顯示列表視圖:

zadapter.notifyDataSetChanged(); 
    setListAdapter(this.zadapter); 

低於源


class InfoAdapter extends ArrayAdapter<String> { 
    private ArrayList<String> items; 
    public InfoAdapter(Context context, int textViewResourceId, ArrayList<String> items) { 
    super(context, textViewResourceId, items); 
    this.items = items; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
    View v = convertView; 
    if (v == null) { 
    LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    v = vi.inflate(R.layout.row, null); 
    } 
    String liste = items.get(position); 
    String[] info = liste.split("&&&"); 
    if (liste != null) { 
    TextView tt = (TextView) v.findViewById(R.id.toptext); 
    TextView bt = (TextView) v.findViewById(R.id.bottomtext); 
    if (tt != null) { 
    tt.setText(info[0]); 
    } 
    if(bt != null){ 
    bt.setText(info[1]); 
    } 
    Log.e(MY_DEBUG_TAG, "Debug position text"+tt.getId()); 
    } 
    Log.e(MY_DEBUG_TAG, "Debug position view"+v.getId()); 
    return v; 
    } 
} 

預先感謝您的任何幫助。

回答

0

在你的調試語句中,你有一個標識符的視圖的id,我相信你想要的是索引。

要觸發取決於所選項目的操作, 必須使用ListView中的setOnItemClickListener方法並實現OnItemClickListener接口。

方法 public void onItemClick(AdapterView<?> list, View v, int pos, long id) 是你需要的。看到方法的描述here

0

您可以請求列表視圖中所選項目的索引,並將其與您的listadapter結合使用來計算視圖的實際數據。

+0

這就是我想要做的,但索引似乎是相同的所有項目... – Sephy 2010-02-01 16:52:56

+0

您實現的適配器有一個方法:getItemId(int position) – MrSnowflake 2010-02-01 23:12:09

0

我想你可能想從BaseAdapter延伸(不需要太多的工作),因爲ArrayAdapter<T>的對象的內部列表對你的子類是隱藏的,所以你的重寫方法使用完全不同的對象列表。

有關更多詳細信息,請參見ArrayAdapter source,尤其是private List<T> mObjects位。

+0

I明天再看看。 Thx的想法。 – Sephy 2010-02-01 18:07:51