2

私は Android アプリケーションに取り組んでいます。私の主な活動では、リストを実装する必要があります。以下は私のページのサンプル形状です。

|----------------------| \
|  |Button|            |  \
|----------------------|   \                  
|listview row1         | \   \
|listview row1         |  \   \---------Screen
|listview row1         | / --/----- ListView 
|                      |/   /
|                      |  /
|                      | /
|______________________|/

ボタンはアクティビティ ページにあり、リストビュー行は baseadapter で作成されています。リストビューにはテキストビューが含まれています。アクティビティからボタンをクリックしたときにテキストビューの背景色を変更する必要があり、次にボタンをクリックすると、テキストビューの色が保持されます。古い色です。どうすれば友達にできますか?. getview() メソッドで textview を宣言しました。

4

2 に答える 2

2

おそらく他の方法もありますが、ボタンの OnClick メソッドでリスト行を循環させます。何かのようなもの:

アクティビティ フィールドの定義:

    static final int colourA=Color.argb(255,255,0,0);
    static final int colourB=Color.argb(255,0,255,0);
    int currentColour=colourA;

アクティビティ OnCreate で:

        Button myButton = (Button) findViewById(R.id.myButton); 
        final ListView myListView = (ListView) findViewByID(R.id.myListView);
        //change myButton to your button id, and myListView to your ListView id
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                //This is the code to toggle the colours, you can do pretty much whatever you want here though
                if (currentColour==colourA){
                    currentColour=colourB;
                } else {
                    currentColour=colourA;
                }

                //This cycles through all the root views in the ListView. If you want to change the
                //colour of only one view in the row layout, in the for loop use 
                //rowView.findViewById(R.id.myViewInRow).setBackgroundColor(currentColour);
                //instead, to get the relevant view in the row
                View rowView;
                for (int i=0;i<myListView.getChildCount();i++){
                    rowView=myListView.getChildAt(i);
                    rowView.setBackgroundColor(currentColour);
                }
            }
        });
于 2012-08-25T07:15:57.167 に答える
0

やっと解決策を見つけました。他の人にも役立つかもしれません。しかし、私は自分のコードの品質についてではありません。

ステップ1)

アクティビティで変数を作成します

static int hidestate=0;

そして、クリックメソッドの非表示ボタンで、これを書きます

hide_btn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            if (hidestate==0) {

                hidestate=1;

                sMSConversationAdapter.notifyDataSetChanged();
                hide_btn.setText("Show All");

            }else {
                hidestate=0;

                sMSConversationAdapter.notifyDataSetChanged();
                hide_btn.setText("Hide All");
            }

        }
    });

ステップ 2) 以下は、私の BaseAdapter クラス getView() です。

public View getView(final int position, View convertView, ViewGroup parent) {

    View vi=convertView;
    final TextView message;

    if(convertView==null)
        vi = inflater.inflate(R.layout.smsconversation_row, null);

    RelativeLayout nws=(RelativeLayout)vi.findViewById(R.id.all);
    message=(TextView)vi.findViewById(R.id.snt_txt);

    if (SMSConversationHome.hidestate==1) {
        message.setVisibility(View.INVISIBLE);

    }
    else{

        message.setVisibility(View.VISIBLE);

    }
}

友達に感謝します。

于 2012-08-25T10:24:46.367 に答える