2013-10-20 88 views
0

首先,我是一名Android編程初學者。所以不要太苛刻:P如何通過單擊從ListView獲取特定項目?

無論如何,我有一個回收ListView,包含一個圖像和每個列表項的文本。 假設有100個不同的項目。點擊的每個項目都會引導我使用「detail_layout.xml」的Activity「DetailActivity.class」。現在我想根據點擊哪個項目來配置此佈局。

TestActivity.java:

ArrayList<String> list = new ArrayList<String>(); 
for(int i = 0; i <= 99; i++) { 
    list.add(detail_array[i]); 
    //detail_array[] contains Strings which are used to add Items to the list. 
} 
private ListView myList = (ListView)findViewById(R.id.list); 
myList.setAdapter(new MyCustomAdapter(TestActivity.this,list)); 

MyCustomAdapter.java:

public class MyCustomAdapter extends BaseAdapter { 

private ArrayList<String> mListItemsTV; 
private LayoutInflater mLayoutInflater; 

public View getView(int position, View view, ViewGroup viewGroup) { 
    ViewHolder holder; 
    if (view == null) { 
     holder = new ViewHolder(); 
     view = mLayoutInflater.inflate(R.layout.list_item, null); 
     holder.itemName = (TextView) view.findViewById(R.id.list_item_text_view); 
     view.setTag(holder); 
    } else { 
     holder = (ViewHolder)view.getTag(); 
    } 
    String stringItem = mListItemsTV.get(position); 
    if (stringItem != null) { 
     if (holder.itemName != null) { 
      holder.itemName.setText(stringItem); 
      ImageView imageView = (ImageView) view.findViewById(R.id.list_item_image_view); 
      if(holder.itemName.getText() == "SomeName") { 
       imageView.setImageResource(R.drawable.somedrawable); 
      } 
    return view; 
} 

說實話,我已經得到了來自某種教程,我想我知道發生了什麼有^^ 現在,我怎樣才能設法得到哪個項目被點擊?我用「setOnClickListener」嘗試了幾次,但它似乎從來沒有工作。我如何使用它?我應該使用這個嗎?我必須在哪裏使用它?

回答

0

你會想要使用setOnItemClickListener。這是如何使用它的例子。你需要適應你的代碼。但是你可以看到你將如何引用列表中的單個項目。

listview.setOnItemClickListener(新AdapterView.OnItemClickListener(){

@Override 
    public void onItemClick(AdapterView<?> parent, final View view, 
     int position, long id) { 
    final String item = (String) parent.getItemAtPosition(position); 
    view.animate().setDuration(2000).alpha(0) 
     .withEndAction(new Runnable() { 
      @Override 
      public void run() { 
      list.remove(item); 
      adapter.notifyDataSetChanged(); 
      view.setAlpha(1); 
      } 
     }); 
    } 

}); 

}

,當我回家。在移動ATM我會修正格式。如果有人想編輯代碼的感覺。免費

0

如果你不想使用適配器那就試試這個:

@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, 
     long id) { 
    switch(position){ 
    /* 
    * The case is the list position 
    */ 
    case 0: 

     break; 
    case 1: 

     break; 
    } 

} 
相關問題