Реализовать связь между двумя линейными макетами в Android - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть два LinearLayouts в моем приложении рядом. В 1st LinearLayout (слева) у меня есть несколько списков имен. Я хочу реализовать связь или отношения между ними таким образом, чтобы при нажатии на один из элементов списка имен текстовое сообщение или какой-либо дизайн отображался в 2-я линейная схема (справа). Я реализовал OnClickListener с Toast, но у меня нет идеи выводить текстовое сообщение или какой-либо дизайн во 2-й линейный макет. Заранее спасибо за любую помощь!

<LinearLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:id="@+id/relLayoutMiddle"  android:orientation="horizontal"
            android:layout_below="@+id/relLayoutTopBar"
            android:layout_above="@+id/relLayoutBottomBar">

            <!-- Items List-->
            <LinearLayout
                android:orientation="vertical"
                android:layout_width="80dp"
                android:layout_height="fill_parent"
                android:layout_marginRight="5dp"
                android:background="@drawable/border_design">    
                <ListView
                    android:id="@+id/item_List" android:scrollbars="none"
                    android:layout_width="match_parent"
                    android:focusable="true"
                    android:layout_height="fill_parent">
                </ListView>
            </LinearLayout>

            <!-- Display Items-->
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1" android:layout_marginLeft="5dp"
                android:background="@drawable/border_design">
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:text="Items  will be Display here"/>
            </LinearLayout>
        </LinearLayout>

Ответы [ 4 ]

0 голосов
/ 14 сентября 2018

Вы можете использовать этот способ для его реализации.

В макете XML:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:id="@+id/relLayoutMiddle"
    android:orientation="horizontal">

    <!-- Items List-->
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="80dp"
        android:layout_height="fill_parent"
        android:layout_marginRight="5dp">
        <ListView
            android:id="@+id/item_List"
            android:scrollbars="none"
            android:layout_width="match_parent"
            android:focusable="true"
            android:layout_height="fill_parent">
        </ListView>
    </LinearLayout>

    <!-- Display Items-->
    <LinearLayout
        android:id="@+id/ll_second"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:layout_marginLeft="5dp">
        <TextView
            android:id="@+id/tv_message"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="Items  will be Display here"/>
    </LinearLayout>
</LinearLayout>

В коде:

    final String[] names = {"one", "two", "three"};
    llSecond = findViewById(R.id.ll_second);
    tvMessage = findViewById(R.id.tv_message);
    ListView lvItem = findViewById(R.id.item_List);
    lvItem.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_activated_1, android.R.id.text1, names));
    lvItem.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            // display a text message that selected in ListView into TextView
            tvMessage.setText(names[position]);

            // Or call user defined function that make to second LinearLayout dynamically with programmatical.
            // makeLayout();
        }
    });
0 голосов
/ 14 сентября 2018

Предположительно, вы внедрили код для проверки нажатия элемента списка, вам нужно только назначить идентификатор для вашего целевого текстового представления. Пример:

<TextView
 android:id="@+id/targetID"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:text="Items  will be Display here"/>

Затем вам нужно найти TextView, используя его идентификатор в коде. Пример:

TextView tv = (TextView)View.findViewById(R.id.targetID);

И изменить содержание ТВ с помощью:

 tv.setText("What you want to write here");

Примечание: код не предназначен для копирования вставки. Это предложение или подход, который вы можете использовать.

0 голосов
/ 14 сентября 2018
 listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            textView.setText(listview.getItemAtPosition(position).toString());
        }

используйте этот код и реализуйте прослушиватель щелчков по списку

0 голосов
/ 14 сентября 2018

у вас должен быть идентификатор для каждого представления, с которым вы хотите работать в своем коде Java.затем вы можете найти это представление с помощью метода findViewById в своей деятельности.так что для вашего просмотра, вы должны рассмотреть идентификатор для вашего второго textView, например, tvDisplay, а затем в вашем onClickListener вы должны установить текст в ваш textView с помощью кода, подобного этому:

((TextView)findViewById(R.id.tvDisplay)).setText("hello")
...