首页 > 解决方案 > 当我单击任何 RecyclerView 列表项时,如何在 MainActivity 的 EditText 中显示该特定单击项?

问题描述

在这里,我使用改造 api 调用从服务器获取了一个包含“状态名称”的列表,并将其显示在回收器视图中,但是当单击应该在 MainActivity 的编辑文本中显示的任何状态名称时,我该怎么做? ??

我曾尝试使用此链接在回收器视图中实现单击侦听器: 如何单击活动中的回收器视图项目?

public class MainActivity extends AppCompatActivity implements RecyclerItemClickListener.onItemClickListener {

    APIInterface apiInterface;
    RecyclerView recyclerView;
    private List<State> stateList;
    RecyclerView.Adapter adapter;
    LinearLayoutManager linearLayoutManager;
    private DividerItemDecoration dividerItemDecoration;
    private EditText editText;
    private TextView state;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editText = findViewById(R.id.edit_text);
        recyclerView = findViewById(R.id.main_list);
        stateList = new ArrayList<>();

        linearLayoutManager = new LinearLayoutManager(this);
       linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);     
  dividerItemDecoration = new DividerItemDecoration(recyclerView.getContext(), 
       linearLayoutManager.getOrientation());


//null reference is occuring over here. 
//placing a text in editText.  

       editText.setText(state.getText().toString());

    apiInterface=NetworkClient.getRetrofitClient().create(APIInterface.class);

        getData();
    }


    private void getData() {

      Call<PostList> postList = apiInterface.getPostList();
        postList.enqueue(new Callback<PostList>() {
            @Override
            public void onResponse(Call<PostList> call, final Response<PostList> response) {

StatesAdapter(getApplicationContext(),response.body().getStates());

                recyclerView.setHasFixedSize(true);
                recyclerView.setLayoutManager(linearLayoutManager);
                recyclerView.addItemDecoration(dividerItemDecoration);
                adapter = new StatesAdapter(MainActivity.this, response.body().getStates());




           recyclerView.addOnItemTouchListener(new RecyclerItemClickListener(MainActivity.this,recyclerView, new RecyclerItemClickListener.onItemClickListener() {
                @Override
                public void onItemClick(View v, int position) {

                  state =(TextView) response.body().getStates();

}

                @Override
                public void onLongItemClick(View v, int position) {

                }
            }));

                recyclerView.setAdapter(adapter);
                adapter.notifyDataSetChanged();

            }

            @Override
            public void onFailure(Call<PostList> call, Throwable t) {
                Toast.makeText(MainActivity.this, "Failure", Toast.LENGTH_SHORT).show();
            }
        });
    }

//PostList 类

公共类 PostList {

@SerializedName("code")
@Expose
private String code;
@SerializedName("States")
@Expose
private List<State> states = null;

public String getCode() {
    return code;
}

public void setCode(String code) {
    this.code = code;
}

public List<State> getStates() {
    return states;
}

public void setStates(List<State> states) {
    this.states = states;
}

}

标签: javaretrofit2android-recyclerview

解决方案


推荐阅读