1

私はこの問題を解決するために2日間試みてきました。この問題に関連する多くの質問を見てきました。しかし、それらは私にはうまくいきませんでした。
私には習慣がありますListView。すべての行に one ImageView、 two TextView、 one が含まれていToggleButtonます。これらはすべて正常にロードされます。ToggleButtonの状態をに変更するtrueと、下にスクロールしてもう一度上にスクロールすると、ToggleButton状態が失われます。それは再び に行きfalseます。

これが私のArrayAdapter

private class MyAdapter extends ArrayAdapter<String> {

    public MyAdapter(Context context, int resource, int textViewResourceId,
            String[] strings) {
        super(context, resource, textViewResourceId, strings);
        // TODO Auto-generated constructor stub
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub

        LayoutInflater inflater  = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View row = inflater.inflate(R.layout.friends_list_item_layout, parent, false);

        RoundedImageView friendThumb = (RoundedImageView) row.findViewById(R.id.friendDp);
        TextView friendName = (TextView) row.findViewById(R.id.friendName);
        TextView friendNumber = (TextView) row.findViewById(R.id.friendNumber);
        ToggleButton shareToggle = (ToggleButton) row.findViewById(R.id.shareLocatioToggle);

        friendName.setText(myItems[position]);
        friendNumber.setText("8888888888");
        //friendThumb.setImageResource(R.drawable.friend_dp_thumb);

        shareToggle.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
                // TODO Auto-generated method stub
                if (arg1) {
                    Toast.makeText(getApplicationContext(), "Shared with "+myItems[position], Toast.LENGTH_SHORT).show();
                }
            }
        });

        shareToggle.setOnLongClickListener(new OnLongClickListener() {

            @Override
            public boolean onLongClick(View arg0) {
                // TODO Auto-generated method stub
                Toast.makeText(getApplicationContext(), "Share your location", Toast.LENGTH_SHORT).show();
                return false;
            }
        });

        return row;
    }



}

ありがとう

4

3 に答える 3

0

setter getter メソッドを使用してトグルのフラグを維持する必要があります。デフォルトではオフに設定されており、状態を維持するためにトグルをオン/オフし、notifydatasetchanged() を呼び出す必要があります。

于 2015-02-26T04:25:08.207 に答える
0

ビューがリスト ビューの可視範囲外にある場合、トグル状態が再作成されます。アクティビティ全体をスクロール可能にすることができます。したがって、トグルボタンはその状態を失いません

于 2015-02-26T04:54:15.667 に答える