Флажок не отображается при множественном выборе ListView - PullRequest
0 голосов
/ 02 февраля 2019

Я хочу, чтобы в моем списке отображались флажки.В настоящее время он просто действует как обычный listView, так как в нем правильно отображаются только элементы, и единственная проблема - отсутствие флажка.Я использую пользовательский адаптер.

Я вставляю соответствующий код здесь, я могу поделиться большим количеством, если необходимо, StackOverflow говорит мне, что слишком много кода, если я просто вставляю всю вещь.

Ps.Новичок в Android.

В моем открытом классе MainActivity расширяется ListActivity

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setListAdapter(new GroceryAdapter(new ArrayList<>(Arrays.asList(arr)), getApplicationContext()));
        ListView list = getListView();
        list.setItemChecked(2, true);
    }

В моем классе GroceryAdapter расширяет ArrayAdapter

private static class ViewHolder {
        TextView txtName;
        TextView txtCost;
    }

public GroceryAdapter(ArrayList<GroceryItem> data, Context x) {
        super(x, android.R.layout.simple_list_item_multiple_choice, data);
        this.data = data;
        this.x = x;
    }

public View getView(int pos, View convertView, ViewGroup parent) {
        GroceryItem item = getItem(pos);
        ViewHolder viewHolder;
        final View result;

        if(convertView == null) {
            viewHolder = new ViewHolder();
            LayoutInflater inflater = LayoutInflater.from(getContext());
            convertView = inflater.inflate(R.layout.row_item, parent, false);
            viewHolder.txtName = convertView.findViewById(R.id.name);
            viewHolder.txtCost = convertView.findViewById(R.id.cost);
            convertView.setTag(viewHolder);
        }
        else {
            viewHolder = (ViewHolder)convertView.getTag();
        }

        viewHolder.txtName.setText(item.name);
        viewHolder.txtCost.setText(String.format("Rs.%s", String.valueOf(item.cost)));
        result = convertView;
        return result;
    }

activity_main.xml

<ListView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@android:id/list"
    android:choiceMode="multipleChoice"
/>

row_item.xml

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/name"
    android:layout_alignParentTop="true"
    android:layout_alignParentStart="true"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/cost"
    android:layout_alignParentTop="true"
    android:layout_alignParentEnd="true"/>

1 Ответ

0 голосов
/ 02 февраля 2019

Вы на самом деле надуваете вид, который вы хотите показывать для каждого элемента в этой строке:

convertView = inflater.inflate(R.layout.row_item, parent, false);

Ваш row_item макет имеет только 2 TextViews, поэтому он будет раздувать этот макет для каждого элементаи поскольку в нем нет никаких флажков, по этой причине вы их не видите.Просто измените этот макет, чтобы включить флажок, где вы хотите, и он будет там.

Либо это, либо измените раздуваемый вами макет, я думаю, что должны быть какие-то готовые Android-приложения для использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...