1

ListView を使用するように変更してRecylerViewおり、各項目のコンテンツの説明を追加したいと考えています。listItem にはボタンの役割があることを追加する必要があるため、「head」+「desc」+「button」と読みます。その部分の実行方法は理解していると思いますが、数回試行した後、正確にどこに配置すればよいかわかりません。これに関するいくつかの質問を読みましたが、どこに置くか少し混乱しています。どんな助けでも大歓迎です。

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {

    private List<ListItem> listItems;
    private Context context;

    // need to initialize variables above
    public MyAdapter(List<ListItem> listItems, Context context) {
        this.listItems = listItems;
        this.context = context;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false);
        return new ViewHolder(v);
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {

        final ListItem listItem = listItems.get(position);

        holder.textViewHead.setText(listItem.getHead());
        holder.textViewDesc.setText(listItem.getDesc());


        holder.linearLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(context, "You clicked " + listItem.getHead(), Toast.LENGTH_SHORT).show();
            }
        });
    }

    @Override
    public int getItemCount() {
        return listItems.size();
    }

    public  class ViewHolder extends RecyclerView.ViewHolder {

        public TextView textViewHead;
        public TextView textViewDesc;
        public ImageView imageview;
        public LinearLayout linearLayout;

        public ViewHolder(View itemView) {
            super(itemView);

            textViewHead = (TextView) itemView.findViewById(R.id.textViewHead);
            textViewDesc = (TextView) itemView.findViewById(R.id.textViewDesc);
            //imageView = (ImageView) itemView.findViewById(R.id.imageView);
            linearLayout = (LinearLayout) itemView.findViewById(R.id.linearLayout);
        }
    }
}
4

2 に答える 2

0

通常、ビューはアクセシビリティ ツールによって解析されるためにフォーカス可能である必要があります。

したがって、ビューをフォーカス可能にする必要があります。また、 を使用してコンテンツの説明を提供する必要がありますView#setContentDescription(CharSequence)


    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false);
        ViewHolder holder = new ViewHolder(v);
        holder.itemView.setFocusable(true);
        return holder;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {

        final ListItem listItem = listItems.get(position);

        holder.textViewHead.setText(listItem.getHead());
        holder.textViewDesc.setText(listItem.getDesc());

        holder.textViewHead.setContentDescription(listItem.getHead());
        holder.textViewDesc.setContentDescription(listItem.getDesc());

        ...
    }

于 2017-09-19T13:28:37.903 に答える