2016-07-07 14 views
0

は、これは私のアダプタクラスです:私のrecyclerviewにデータを入力できません。

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; 
} 

Activityクラス:私は、データベースからのデータを表示しようとしている

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に表示されないのか分かりません。 私は助けが必要です。

答えて

0

displaysItem方法内側

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

adapter.update(itemList); 

を交換します。

0

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(); 
} 
関連する問題