列表视图中每个项目的微调器的OnItemClickListener()

时间:2019-05-02 22:47:04

标签: android listview listener spinner custom-adapter

我有一个带有其自定义适配器的列表视图,并且在该列表视图的每个项目中都放置了一个微调器,但是问题是,这些项目是由用户添加的,所以我不知道如何在他捕获时捕获它在微调器中进行选择。

PS。我已经在该列表视图的每个项目中都放置了一个微调器,但是我不知道如何在那些内部微调器中侦听选择。

那么我应该将onIitemClickListener放在自定义适配器的GetView()还是MainActivity()的onCreate函数中?

微调框确实有一个ID,但是由于我使用的是自定义列表视图,因此除非我在GetView()中指定列表视图的项,否则每个微调框几乎都好像都具有相同的ID,但即使如此,它也是可以将侦听器放入getView()并使其以24/7运行?

谢谢!

2 个答案:

答案 0 :(得分:0)

您应该使用GetView()在OnCreate()方法内添加OnItemClickListener。只要正确使用GetView(),您就不需要ID。如果需要,还可以使用OnItemSelectedListener。您可以进一步了解here

希望这会有所帮助!

答案 1 :(得分:0)

首先,我建议您使用Recyclerview,您可以与此同时从旋转器中选取项目

public class TestSpinnerInListView extends RecyclerView.Adapter<TestSpinnerInListView.TestSpinnerHolder> {


@NonNull
@Override
public TestSpinnerHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    return new TestSpinnerHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_test,parent, false));
}

@Override
public void onBindViewHolder(@NonNull TestSpinnerHolder holder, int position) {
    holder.spTest.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            //Do something
            holder.tvTest.setText((String) parent.getItemAtPosition(position));
        }
    });
}

@Override
public int getItemCount() {
    return 3;
}

class TestSpinnerHolder extends RecyclerView.ViewHolder{

    public TextView tvTest;
    public Spinner spTest;
    public TestSpinnerHolder(@NonNull View itemView) {
        super(itemView);
        tvTest = itemView.findViewById(R.id.tvTest);
        spTest = itemView.findViewById(R.id.sptest);

    }
}

}