我有一個列表視圖在我的android列表活動,它通過json文件獲取數據。在列表視圖中,我必須顯示項目的基本細節。當我們點擊一個項目時,我需要顯示關於點擊項目的更多信息。那麼如何識別用戶點擊了哪個項目呢?獲取Android列表中單擊的項目
2
A
回答
1
在你的監聽器實現你參考單擊的View
,並在itemClick
(或ExpandableList:groupClick
/childClick
)的情況下,你也有你的列表裏面的底層數據的位置。
所以,只需使用該位置從您用來填充列表(適配器)的數據結構中檢索點擊的數據即可。
更新
如果你有ListActivity
,其中dataList
成員保存您在列表中顯示的值,你只需要重寫它的onListItemClick
方法:
/**
* The list of custom data you display in this activity
*/
private ArrayList<MyData> dataList;
@Override
protected void onListItemClick(ListView l, View v, int position, long id)
{
super.onListItemClick(l, v, position, id);
final MyData selectedValue = dataList.get(position);
//TODO: deal with this selectedValue
}
API文檔對於onListItemClick
當列表中的 項目被選中時,將調用此方法。 應該覆蓋子類。
子類可以調用 getListView()。getItemAtPosition(position) 如果他們需要訪問與選定項目關聯的數據 。
參數:
l
當點擊 發生v
被點擊內 ListView控件position
認爲 在位置視圖中的ListView列表id
這是 項的行ID點擊
一個完整的例子,你可以找到Android-er here和here。
-1
public class MainActivity extends AppCompatActivity {
private ListView listview;
private ArrayList<DataModel> arrayList;
private DataModel datamodel;
private AdapterForList adapterForList;
public ArrayList<DataModel> getArrayList(){
arrayList = new ArrayList<DataModel>();
datamodel = new DataModel();
for(int i=0; i<8; i++){
datamodel.setTextData("count"+i);
}
return arrayList;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listview = (ListView) findViewById(R.id.listview);
adapterForList = new AdapterForList(this,getArrayList());
listview.setAdapter(adapterForList);
}
private class AdapterForList extends BaseAdapter{
ArrayList<DataModel> DataList;
private ViewHolder holder;
private LayoutInflater inflater;
private Context context;
private AdapterForList(Context context,ArrayList<DataModel> arrayList){
this.DataList = arrayList;
this.context = context;
Log.d("hereeee","--->"+DataList.size());
}
@Override
public int getCount() {
return DataList.size();
}
@Override
public Object getItem(int position) {
return DataList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null) {
holder = new ViewHolder();
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.raw_view, null, true);
holder.textview = (TextView) convertView.findViewById(R.id.textView);
holder.lltextview = (LinearLayout) convertView.findViewById(R.id.lltextview);
convertView.setTag(holder);
}else {
holder = (ViewHolder) convertView.getTag();
}
holder.textview.setText(DataList.get(position).getTextData());
holder.lltextview.setTag(R.integer.btnview, convertView);
holder.lltextview.setTag(R.integer.btnpos, position);
holder.lltextview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
View tempview = (View) v.getTag(R.integer.btnview);
Integer pos = (Integer) v.getTag(R.integer.btnpos);
TextView tv = (TextView) tempview.findViewById(R.id.textView);
tv.setText("changeee");
}
});
return convertView;
}
private class ViewHolder{
public TextView textview;
public LinearLayout lltextview;
}
}
}
相關問題
- 1. Android的ListView,點擊獲取列表中的項目的名稱
- 2. Qt5:獲取在列表視圖中單擊的項目的值
- 3. 獲取點擊項目:Android
- 4. Android中的項目列表中獲取唯一的項目ID
- 5. 從textview的列表視圖中獲取所選項目單擊Android
- 6. 從按鈕中獲取列表框項目索引單擊
- 7. 獲取從列表項的列表中單擊函數值
- 8. Android - 獲取子菜單中點擊的MenuItem的項目標識
- 9. 獲取點擊列表項
- 10. 雙擊列表視圖項目時獲取選定項目
- 11. 單擊項目時未返回列表中的目標項目
- 12. 獲取簡單列表項單項選擇題 - 獲取選定的項目
- 13. 單擊ListView中的項目時獲取項目位置0
- 14. 無法獲取網格或列表項目中點擊的項目的索引
- 15. 獲取列表視圖中點擊項目的索引
- 16. 獲取列表項目GUID
- 17. 獲取列表項目數
- 18. Appium獲取列表項目
- 19. 從列表框中的三個項目獲取表單名稱
- 20. 如何獲取VS2008 C#項目中的表單列表?
- 21. 如何在Android中單擊不同的列表項時獲取不同的值?
- 22. 獲取java項目中的包列表
- 23. 獲取列表中項目的路徑
- 24. 獲取列表中項目的屬性
- 25. 獲取java項目中的包列表
- 26. 鼠標單擊列表框中的選定項目取消選擇oders項目
- 27. 在android中的列表視圖中獲取項目
- 28. Webgrid:獲取行單擊項目模型
- 29. 單擊ListView時獲取項目名稱
- 30. 獲取單擊數組項目
其中u需要表現出更多的信息? – 2011-05-02 06:06:21