[英]How to get data and View from a ListView
大家好:我希望有人可以在這里為您提供幫助,由查詢生成的游標會使用由simple_list_item_2定義的Layout填充ListView
。 要創建Intent,我需要單擊視圖的第一個字符串,但是在“要運行的字符串”中,我有類似以下內容
android.widget.TextView@411fbfb8
現在的代碼。 我不明白錯誤在哪里。
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_2, cursor, columns, ids, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
final ListView myList=(ListView)findViewById(R.id.listView1);
myList.setAdapter(adapter);
myList.setClickable(true);
/*
* Click Listener
*/
myList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> l, View v, int position, long id)
{
Log.v("io", "start");
Intent intent = new Intent(MainActivity.this, WorkActivity.class);
View buff = myList.getChildAt(position);
String toGo = buff.findViewById(android.R.id.text1).toString();
Log.v("io",toGo);
intent.putExtra("dname", toGo);
startActivity(intent);
}
} );
嘗試:
String toGo = ((TextView)buff.findViewById(android.R.id.text1)).getText().toString()
在onItemClick
內部,您可以通過AdapterView
參數檢索鏈接到adapter
數據。 調用getItemAtPosition(int)
可以訪問與所選項目關聯的數據
myList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> l, View v, int position, long id)
{
Log.v("io", "start");
Intent intent = new Intent(MainActivity.this, WorkActivity.class);
View buff = myList.getChildAt(position);
String toGo = l.getItemAtPosition(position);
Log.v("io",toGo);
intent.putExtra("dname", toGo);
startActivity(intent);
}
} );
//
myList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> l, View v, int position, long id)
{
Log.v("io", "start");
Intent intent = new Intent(MainActivity.this, WorkActivity.class);
//View buff = myList.getChildAt(position);
// String toGo = buff.findViewById(android.R.id.text1).toString();
String toGo = (TextView)v.getText();
Log.v("io",toGo);
intent.putExtra("dname", toGo);
startActivity(intent);
}
} );
要獲取視圖,請執行以下操作:
LinearLayout row = (LinearLayout) ((LinearLayout)v);
或者,如果您的情況是RelativeLayout
而不是LinearLayout
然后應用以下代碼以根據其順序獲取TextView的文本:
TextView column = (TextView)row.getChildAt(0);
String text = column.getText().toString();
希望這個幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.