-1

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

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

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

微调器确实有一个 id,但由于我使用的是自定义列表视图,所以每个微调器几乎都具有相同的 id,除非我在 GetView() 中指定列表视图的项目,但即使这样也可以放置getView() 中的侦听器并让它 24/7 运行?

提前致谢!

4

2 回答 2

1

您应该使用 GetView() 在 OnCreate() 方法中添加 OnItemClickListener。只要您正确使用 GetView(),您就不需要 id。如果您愿意,还可以使用 OnItemSelectedListener。您可以在此处了解更多信息。

希望这可以帮助!

于 2019-05-02T22:55:48.023 回答
1

首先我建议你使用 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);

    }
}

}

于 2019-05-02T23:04:29.510 回答