无法在我的recyclerview中填充数据。

时间:2016-07-07 10:59:43

标签: android android-recyclerview

这是我的Adapter类:

    public class ItemsAdapter extends RecyclerView.Adapter<ItemsAdapter.RecyclerViewHolder> {
ArrayList<Item> arrayList=new ArrayList<>();

public ItemsAdapter(ArrayList<Item> arrayList, Context context) {
    this.arrayList = arrayList;
    this.context = context;
}

Context  context;

public void update(ArrayList<Item> items)
{
    this.arrayList=items;
    this.notifyDataSetChanged();
}


@Override
public RecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view=LayoutInflater.from(context).inflate(R.layout.displays_searchitems,parent,false);
    RecyclerViewHolder recyclerViewHolder=new RecyclerViewHolder(view);
    return recyclerViewHolder;
}

@Override
public void onBindViewHolder(RecyclerViewHolder holder, int position) {
    Item item=arrayList.get(position);
    holder.ets_ean1.setText(item.getItem_ean());
    holder.ets_company.setText(item.getItem_company());
    holder.ets_name.setText(item.getItem_name());
    holder.ets_desc.setText(item.getItem_desc());
    holder.ets_brand.setText(item.getItem_brand());


}

@Override
public int getItemCount() {
    return arrayList.size();
}
public static class RecyclerViewHolder extends RecyclerView.ViewHolder{


    EditText ets_company,ets_name,ets_desc,ets_brand,ets_ean1;
    public RecyclerViewHolder(View view) {

        super(view);
        ets_company= (EditText) view.findViewById(R.id.ets_company);
        ets_name=(EditText) view.findViewById(R.id.ets_name);
        ets_desc=(EditText) view.findViewById(R.id.ets_desc);
        ets_brand=(EditText) view.findViewById(R.id.ets_brand);
        ets_ean1=(EditText) view.findViewById(R.id.ets_ean1);

    }
}

我的POJO课程:

    public class Item {
     private int item_number;
     private String item_ean;
     private String item_desc;
     private String item_name;
     private String item_company;
     private String item_brand;

     public Item(int item_number, String item_ean, String item_desc,  String item_name, String item_company, String item_brand) {
     this.item_number = item_number;
     this.item_ean = item_ean;
     this.item_desc = item_desc;
     this.item_name = item_name;
     this.item_company = item_company;
     this.item_brand = item_brand;
 }

public Item() {
}

public int getItem_number() {
    return item_number;
}

public void setItem_number(int item_number) {
    this.item_number = item_number;
}

public String getItem_ean() {
    return item_ean;
}

public void setItem_ean(String item_ean) {
    this.item_ean = item_ean;
}

public String getItem_desc() {
    return item_desc;
}

public void setItem_desc(String item_desc) {
    this.item_desc = item_desc;
}

public String getItem_name() {
    return item_name;
}

public void setItem_name(String item_name) {
    this.item_name = item_name;
}

public String getItem_company() {
    return item_company;
}

public void setItem_company(String item_company) {
    this.item_company = item_company;
}

public String getItem_brand() {
    return item_brand;
}

public void setItem_brand(String item_brand) {
    this.item_brand = item_brand;
}

活动类:

    public class Search extends Activity {
    TextView textView;
    EditText editText,editText1;
ToggleButton toggleButton;
private DBController dbcontroller;
private SQLiteDatabase database;
RecyclerView recyclerView;
RecyclerView.LayoutManager layoutManager;
private static final int CAMERA_PHOTO = 111;
private ImageView ImgPhoto;
private Uri imagaeToUploadUri;
ArrayList<HashMap<String, String>> selected = new ArrayList<>();
ArrayList<HashMap<String, String>> pselected = new ArrayList<>();
private  ArrayList<Item> arrayList=new ArrayList<>();
ItemsAdapter adapter;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_search);
    editText = (EditText) findViewById(R.id.et_sdata);
    textView = (TextView) findViewById(R.id.textView);
    dbcontroller = new DBController(this);
    textView = (TextView) findViewById(R.id.txt_message);
    toggleButton = (ToggleButton) findViewById(R.id.tggl_btn);
    ImgPhoto = (ImageView) findViewById(R.id.imageView);
    editText1 = (EditText) findViewById(R.id.ets_ean1);
    recyclerView= (RecyclerView) findViewById(R.id.customList);
    adapter=new ItemsAdapter(arrayList,this);
    RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
    recyclerView.setLayoutManager(mLayoutManager);
    recyclerView.setItemAnimator(new DefaultItemAnimator());
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    recyclerView.setAdapter(adapter);
}

@Override
protected void onResume() {
    super.onResume();
    editText.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            String string = s.toString();
            if (string.length() > 0 && string.charAt(string.length() - 1) == '\n') {
                displayItems();

            }
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });
}

public void displayItems() {
    String s2 = editText.getText().toString();
    ArrayList<HashMap<String, String>> allItems = dbcontroller.searchdata(s2);
    //ArrayList<HashMap<String, String>> predicted = dbcontroller.getpdata(s4);
    ArrayList<Item> itemList=new ArrayList<Item>();
    s2 = s2.replace("\\n", "").replace("\n", "");
    long ean_num=Long.parseLong(s2.trim());
    Item item=new Item();
        if (allItems.size() == 0) {
            allItems = dbcontroller.getpdata(s2);
            for (HashMap<String, String> map : allItems)
            {
                long ean_num_pred = Long.parseLong(map.get("EAN"));
                selected=pselected;
                selected.add(map);
                item.setItem_ean(map.get("item_ean"));
                item.setItem_company(map.get("item_company"));
                item.setItem_name(map.get("item_name"));
                item.setItem_brand(map.get("item_brand"));
                item.setItem_desc(map.get("item_desc"));
                itemList.add(item);
                Log.d("Cpredictor","Items are"+item);
                boolean isInserted = dbcontroller.insertReport(editText.getText().toString(), "2");
                Log.d("coredictor", "the value is " + ean_num);
                Log.d("coredictor", "the predicted value is " + ean_num_pred);
                textView.setText("(S)"+s2+"(P)"+map.get("item_ean"));
                textView.setTextColor(Color.GREEN);
                editText.setText("");
                if (isInserted = true)
                {
                    Toast.makeText(Search.this, "Data inserted", Toast.LENGTH_LONG).show();
                }else{
                        Toast.makeText(Search.this, "Data not inserted", Toast.LENGTH_LONG).show();
                    }
                    toggleButton.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            if (((ToggleButton) v).isChecked()) {
                                boolean isUpdated = dbcontroller.updatePrediction(editText.getText().toString(), "4");
                                Toast.makeText(getBaseContext(), "Toggle is on" + isUpdated, Toast.LENGTH_LONG).show();
                                editText.setText("");
                            } else {
                                boolean isUpdated = dbcontroller.updatePrediction(editText.getText().toString(), "3");
                                Toast.makeText(getBaseContext(), "Toggle is off", Toast.LENGTH_LONG).show();
                                editText.setText("");
                            }
                        }
                    });
            }
    } else {
            for (HashMap<String, String> map : allItems)
            {
                if (map.get("EAN").equals(s2))
                {
                    item=new Item();
                    item.setItem_ean(map.get("item_ean"));
                    item.setItem_company(map.get("item_company"));
                    item.setItem_name(map.get("item_name"));
                    item.setItem_brand(map.get("item_brand"));
                    item.setItem_desc(map.get("item_desc"));
                    itemList.add(item);
                    boolean isInserted = dbcontroller.insertReport(editText.getText().toString(), "1");
                    selected=pselected;
                    selected.add(map);
                    textView.setText("ITEM FOUND!!!!!");
                    textView.setTextColor(Color.BLUE);
                    editText.setText("");
                    if (isInserted = true)
                        Toast.makeText(Search.this, "Data inserted", Toast.LENGTH_LONG).show();
                    else
                        Toast.makeText(Search.this, "Data not inserted", Toast.LENGTH_LONG).show();
                }

            }
        }
        adapter.update(itemList);

        //ListAdapter adapter = new SimpleAdapter(Search.this,selected,R.layout.displays_searchitems, new String[]{"EAN", "COMPANY", "NAME", "DESCRIPTION", "BRAND"}, new int[]{
            //   R.id.ets_ean1, R.id.ets_company, R.id.ets_name, R.id.ets_desc, R.id.ets_brand});
       //tomList.setAdapter(adapter);


}

我正在尝试显示数据库中的数据(sqlite)。 逻辑运作正常。我已经把日志,我可以看到它显示完美的数据。但我不知道为什么我的recyclerview中没有显示数据。 伙计们,我需要帮助。

2 个答案:

答案 0 :(得分:0)

替换

adapter.update(itemList); 

arrayList.clear();
arrayList.addAll(itemList);
adapter.notifyDataSetChanged()

displaysItem方法内。

答案 1 :(得分:0)

粒度更新优于Calling notifyDatasetchanged()。具体并使用notifyitem插入。

public void addItems(List<T> Items)
{
    for(T object:Items)
    {
        add(object);
    }
}
public void add(final T object) {
    arrayList.add(object);
    notifyItemInserted(getItemCount() - 1);
}
@Override
public int getItemCount() {
    return arrayList== null ? 0 : arrayList.size();
}