дублировать все действия вместо [флажки и только текст] (сделать список приложений для Android) - PullRequest
0 голосов
/ 01 октября 2019

Я пытаюсь составить список дел. дизайн здесь "https://i.ibb.co/cXnQ9dP/Capture.png"

Я получил окно и текстовый код от" https://www.vogella.com/tutorials/AndroidListView/article.html" proj (15.1. Взаимодействие между моделью и Listview), но я поместил код XML в свою существующую деятельность XML [не в новом действии] и изменил имя действия в супер (контекст, R.layout.rowbuttonlayout, список);и view = inflator.inflate (R.layout.rowbuttonlayout, null);на имя моей основной деятельности

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.mando.todolist.new_list">
.............background and buttons code here............
<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignStart="@id/plus"
        android:orientation="horizontal"
        android:paddingTop="205dp"
        android:id="@+id/repeat_layout"
        >



        <CheckBox
            android:id="@+id/check"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="4px"
            android:layout_marginRight="10px" >
        </CheckBox>

        <TextView
            android:id="@+id/label"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@+id/label"
            android:textSize="50px"
            android:layout_alignRight="@id/check"
            >

        </TextView>
    </LinearLayout>
public InteractiveArrayAdapter(Activity context, List<Model> list) {
        super(context, R.layout.activity_new_list, list);
        this.context = context;
        this.list = list;
    }

    static class ViewHolder {
        protected TextView text;
        protected CheckBox checkbox;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = null;
        if (convertView == null) {
            LayoutInflater inflator = context.getLayoutInflater();
            view = inflator.inflate(R.layout.activity_new_list.,null);
            final ViewHolder viewHolder = new ViewHolder();
            viewHolder.text = (TextView) view.findViewById(R.id.label);
            viewHolder.checkbox = (CheckBox) view.findViewById(R.id.check);
            viewHolder.checkbox
                    .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

                        @Override
                        public void onCheckedChanged(CompoundButton buttonView,
                                                     boolean isChecked) {
                            Model element = (Model) viewHolder.checkbox
                                    .getTag();
                            element.setSelected(buttonView.isChecked());

                        }
                    });
            view.setTag(viewHolder);
            viewHolder.checkbox.setTag(list.get(position));
        } else {
            view = convertView;
            ((ViewHolder) view.getTag()).checkbox.setTag(list.get(position));
        }
        ViewHolder holder = (ViewHolder) view.getTag();
        holder.text.setText(list.get(position).getName());
        holder.checkbox.setChecked(list.get(position).isSelected());
        return view;
    }
}
public class new_list extends ListActivity {

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        // create an array of Strings, that will be put to our ListActivity
        ArrayAdapter<Model> adapter = new InteractiveArrayAdapter(this,
                getModel());
        setListAdapter(adapter);
    }

    private List<Model> getModel() {
        List<Model> list = new ArrayList<Model>();
        list.add(get("Linux"));
        list.add(get("Windows7"));
        list.add(get("Suse"));
        list.add(get("Eclipse"));
        list.add(get("Ubuntu"));
        list.add(get("Solaris"));
        list.add(get("Android"));
        list.add(get("iPhone"));
        // Initially select one of the items
        list.get(1).setSelected(true);
        return list;
    }

    private Model get(String s) {
        return new Model(s);
    }
}

Вывод: все действия были дублированы [включая фон и кнопки] вместо дублирования флажка с текстом только в той же деятельности

1 Ответ

0 голосов
/ 01 октября 2019

Переместите фон и кнопки в xml-файл, в который вы поместили свой ListView, он должен выглядеть следующим образом, потому что элемент xml, который вы используете там, где есть ваш CheckBox, это тот, который используется для ListView, если вы, кроме кнопки, будете дублироватьтоже

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <!-- background and buttons code here -->
    <ListView
        android:id="@id/android:list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:headerDividersEnabled="true"/>

</LinearLayout>
...