Простой Recycleview в Android

Я пробую в создании списка с простым контентом, а именно каждый элемент он появляется в единственной линии

    ArrayList list = new ArrayList();

    list.add("Simple Item1");
    list.add("Simple Item2");
    list.add("Simple Item3");
    list.add("Simple Item4");

    RecyclerView mRecyclerView = (RecyclerView) findViewById(R.id.simple_recycler_view);
    mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
    mRecyclerView.setAdapter(new SimpleListAdapter(this,list));

draw_item.xml





    


Где я escasquillado, в создает Адаптер Симплелистадаптер Тенго следующее, что не функционирует, я это взял другого проекта и это приспосабливаю для того, чтобы оно функционировало с простым array.

public class SimpleListAdapter extends ArrayAdapter {

    private final Activity context;
    private final List objects;

    public static class ViewHolder {
        public TextView text1;
    }

    public SimpleListAdapter(Context context, ArrayList objects) {
        super(context, 0, objects);
        this.context = (Activity) context;
        this.objects = objects;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent){

        //Obteniendo una instancia del inflater
        LayoutInflater inflater = (LayoutInflater)getContext()
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        //Salvando la referencia del View de la fila
        View listItemView = convertView;

        //Comprobando si el View no existe
        if (null == convertView) {
            //Si no existe, entonces inflarlo con image_list_view.xml
            listItemView = inflater.inflate(
                    android.R.layout.simple_list_item_1,
                    parent,
                    false);
        }

        //Obteniendo instancias de los elementos
        TextView text1 = (TextView)listItemView.findViewById(android.R.id.text1);
        //TextView subtitulo = (TextView)listItemView.findViewById(android.R.id.text2);

        //Obteniendo instancia de la Tarea en la posición actual
        //List row = getItem(position);

        //Devolver al ListView la fila creada
        return listItemView;

    }
}

Конечный результат я хочу как introducir la descripción de la imagen aquí

1
задан 30.03.2016, 21:09
1 ответ

Проблема - твой адаптер, чтобы использовать RecyclerView, твой adapter должен увеличивать RecyclerView.Adapter<SimpleListAdapter.ViewHolder> {

как seГ±ala в documentaciГіn .

RecyclerView.Adapter<VH extends RecyclerView.ViewHolder>

пример:

import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.TextView;

import java.util.ArrayList;

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

    private ArrayList<String> mDataset;

    public class ViewHolder extends RecyclerView.ViewHolder {

        public TextView txtHeader;

        public ViewHolder(View v) {
            super(v);
            txtHeader = (TextView) v.findViewById(R.id.text1);

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

    public void add(int position, String item) {
        mDataset.add(position, item);
        notifyItemInserted(position);
    }

    public void remove(String item) {
        int position = mDataset.indexOf(item);
        mDataset.remove(position);
        notifyItemRemoved(position);
    }

    public SimpleListAdapter(ArrayList<String> myDataset) {
        mDataset = myDataset;
    }

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

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        final String name = mDataset.get(position);
        holder.txtHeader.setText(mDataset.get(position));
        holder.txtHeader.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                //remueve item!
                remove(name);
            }
        });

    }

}

Используя правильный Adapter ты можешь загружать без проблемы совещания:

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

        ArrayList<String> list = new ArrayList<String>();

        list.add("Simple Item1");
        list.add("Simple Item2");
        list.add("Simple Item3");
        list.add("Simple Item4");

        RecyclerView mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
        mRecyclerView.setHasFixedSize(true);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
        mRecyclerView.setAdapter(new SimpleListAdapter(list));

    }

introducir la descripción de la imagen aquí

4
ответ дан 24.11.2019, 14:40
  • 1
    Спасибо, я volv и # 237; в сумасшедшего в не нахождении soluci и # 243; n простой, многие из примеров recycleview, которые находятся из-за сети, используют персонализированные данные – Webserveis 31.03.2016, 13:55