簡體   English   中英

如何在ListView中控制LinearLayout的子級?

[英]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_switchrow_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM