[英]How to control children of LinearLayout in a ListView?
我只是將ArrayAdapter設置為convertView以得到我的青睞,但是現在我想知道如何控制在該listview中使用的LinearLayouts的子級,可以說我在Linearlayout中有一個TextView,我想調用setText,但是我不這樣做。不知道如何操作,或者我有一個要調用setOnClickListener的按鈕,我不知道如何!
這是我的getView代碼:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
if (convertView == null){
convertView = inf.inflate(R.layout.normal_row, parent , false);
}
switch(position){
case(0):
// here is where my first LinearLayout goes , containing an Image and Switch which I need to program in onCheckedChangeListener ...
convertView = (LinearLayout) inf.inflate(R.layout.row_switch, parent,false);
break;
case(1)
// here I need to set the Text for the following two options on some basis , they are both linearLayouts containing a single textView which I want to call setText for each case 1 and 2.
break;
case(2)
}
假設您的normal_row布局中有一個ID為@ id / my_text_view的TextView。 然后您將文本設置為
TextView view = (TextView) convertView.findViewById(R.id.my_text_view);
view.setText("Some text");
您可以以類似的方式訪問通過其ID誇大的布局中的任何內容。
不過要注意的一件事是,您似乎誇大了兩種類型的視圖。 假設您嘗試使用我給您的代碼,但是my_text_view
僅在normal_row中。 然后,如果您row_switch
了row_switch
視圖,則findViewById()將返回null,因為它找不到具有給定id的視圖。
使用onItemClick並通過OnItemClickListener為您提供的視圖找到您的視圖!
例如:`mListView.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
}
});`
通過傳遞的View,在每個listView子級中找到您的textview或按鈕。
示例: TextView tempTextView = (TextView) arg1.findViewById(R.id.myTextView);
Textview的ID是您在展開式布局中為每一行分配的ID!
TextView textview = (TextView) convertView.findById(R.id.txt);
text.setText("textview");
Button btn = (Button) convertView.findById(R.id.btn);
btn.setTag(textview);
btn.setOnClickListener(...)
{
onClick(..){
TextView t = (Textview)btn.getTag():
t.setText("new value")
}
}
我建議您看看我之前回答的問題 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.