android-fragments 如何使用java在android的模型视图片段中获取片段的列表视图的点击项的值

cfh9epnr  于 2022-11-14  发布在  Android
关注(0)|答案(1)|浏览(187)

我有一个模型视图片段,它有一个列表视图和一个文本视图。
我想要的是,每当列表视图的一个项目被点击,它的点击项目将显示在文本视图中。

以下是fragment_home.xml的代码:-

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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=".ui.home.HomeFragment"
    android:background="@drawable/background">



    <ListView
        android:id="@+id/lv_main"
        android:layout_width="409dp"
        android:layout_height="match_parent"
        tools:layout_editor_absoluteX="1dp"
        tools:layout_editor_absoluteY="1dp"
        tools:ignore="MissingConstraints"
        android:entries="@array/sections" >

    </ListView>

    <TextView
        android:id="@+id/textHome"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />

</androidx.constraintlayout.widget.ConstraintLayout>

以下是www.example.com的代码HomeFragment.java

public class HomeFragment extends Fragment {

    private FragmentHomeBinding binding;

    public View onCreateView(@NonNull LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {
        HomeViewModel homeViewModel =
                new ViewModelProvider(this).get(HomeViewModel.class);

        binding = FragmentHomeBinding.inflate(inflater, container, false);
        View root = binding.getRoot();

        final TextView textView = binding.textHome;
        homeViewModel.getText().observe(getViewLifecycleOwner(), textView::setText);

以下是www.example.com的代码HomeViewModel.java

public class HomeViewModel extends ViewModel {

    private final MutableLiveData<String> mText;

    ListView lv_main;
    ArrayList<String> items;

    public HomeViewModel() {
        mText = new MutableLiveData<>();
        

        lv_main.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
 
                mText.setValue(items.get(position));
            }
        });

    }

    public LiveData<String> getText() {
        return mText;
    }
}

请让我知道如何才能做到这一点,并借此感谢我。

  • 谢谢-谢谢
eqoofvh9

eqoofvh91#

你可以使用一个接口来完成它,类似于:calling click with interface
因此,当单击item时,通过接口发送值并在textview中显示。

相关问题