-3
我想,當我選擇spinner.I的項目需要不同的數據在每個微調項selection.Although DATAS顯示正在顯示刪除從Recyclerview所有的數據,但它被附加到以前的微調選擇數據。 我想讓recyclerview適配器得到清除,並在微調器選擇上加載新數據。有人可以幫我解決這個問題。 這裏是我的代碼Recyclerview數據清除
MainActivity
public class MainActivity extends AppCompatActivity {
Spinner spinner1;
RecyclerView recyclerView1;
private String spinnerValues[];
private ProgressDialog pdlog;
public RecyclerDataAdapter adapter;
ArrayList<ProductModel> productDetails;
String url="aaa=1";
ProductModel pm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView1=(RecyclerView)findViewById(R.id.recyclerView1);
RecyclerView.LayoutManager mLayoutmanager=new GridLayoutManager(getApplicationContext(),2);
recyclerView1.setLayoutManager(mLayoutmanager);
adapter=new RecyclerDataAdapter();
productDetails=new ArrayList<ProductModel>();
spinner1=(Spinner)findViewById(R.id.spinner1);
spinner1.getBackground().setColorFilter(Color.parseColor("#d62041"), PorterDuff.Mode.SRC_ATOP);
spinnerValues=new String[]{"a","b","c","d","e","f"};
final ArrayAdapter<String>adapter=new ArrayAdapter<String>(this,R.layout.spinner_style,spinnerValues);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner1.setAdapter(adapter);
spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
String selectedValue=spinner1.getSelectedItem().toString().replaceAll("\\s+","").toUpperCase();
Toast.makeText(getApplicationContext(),"selected : "+selectedValue,Toast.LENGTH_SHORT).show();
if(selectedValue.equals("a")){
url="aaa=1";}
if(selectedValue.equals("b")){
url="aaa=2";}
if(selectedValue.equals("c")){
url="aaa=3";}
if(selectedValue.equals("d")){
url="aaa=4";}
if(selectedValue.equals("e")){
url="aaa=5";}
if(selectedValue.equals("f")){
url="aaa=6";}
Toast.makeText(getApplicationContext(),url,Toast.LENGTH_SHORT).show();
new FetchDetails().execute();
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
}
class FetchDetails extends AsyncTask<String,String,String>
{
@Override
protected void onPreExecute() {
super.onPreExecute();
pdlog=new ProgressDialog(MainActivity.this);
pdlog.setMessage("Loading");
pdlog.setCancelable(false);
pdlog.show();
}
@Override
protected String doInBackground(String... strings) {
pm=null;
HttpHandler h=new HttpHandler();
String jsonString=h.makeServiceCall(url);
if(jsonString!=null){
try{
JSONArray imageArray=new JSONArray(jsonString);
for(int i=0;i<imageArray.length();i++){
JSONObject jsonData=imageArray.getJSONObject(i);
pm=new ProductModel();
pm.pro_id=Integer.parseInt(jsonData.getString("pro_id"));
pm.pro_name=jsonData.getString("pro_name");
pm.pro_image=jsonData.getString("pro_image");
productDetails.add(pm);
System.out.println("***************************************************");
System.out.println("(MainActivity)product name: "+jsonData.getString("pro_name")+"\n");
System.out.println("(MainActivity)pro url : "+jsonData.getString("pro_image"));
System.out.println("***************************************************");
adapter=new RecyclerDataAdapter(getApplicationContext(),productDetails);
}
}catch (Exception e){
e.printStackTrace();
}
}
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
if(pdlog.isShowing())
pdlog.dismiss();
recyclerView1.setAdapter(adapter);
}
}
}
RecyclerDataAdapter
public class RecyclerDataAdapter extends RecyclerView.Adapter<RecyclerDataAdapter.ViewHolder> {
public ArrayList<ProductModel>productDetails;
public Context context1;
public RecyclerDataAdapter(){
}
public RecyclerDataAdapter(Context context, ArrayList<ProductModel> getproductDetails){
this.context1=context;
this.productDetails=getproductDetails;
System.out.println("********************** inside adapter class constructor *************************");
for(int i=0;i<productDetails.size();i++){
System.out.println("/////////////////////// product name : "+productDetails.get(i).pro_name);
System.out.println("/////////////////////// image url : "+productDetails.get(i).pro_image);
}
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.row,parent,false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.product_id.setText(Integer.toString(productDetails.get(position).getPro_id()));
holder.product_name.setText(productDetails.get(position).getPro_name());
Picasso.with(context1)
.load(productDetails.get(position).pro_image)
.fit()
.into(holder.imageview1);
}
@Override
public int getItemCount() {
return productDetails.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
public TextView product_id,product_name;
public ImageView imageview1;
public ViewHolder(View itemView) {
super(itemView);
imageview1=(ImageView)itemView.findViewById(R.id.imageView1);
product_id=(TextView)itemView.findViewById(R.id.product_id);
product_name=(TextView)itemView.findViewById(R.id.product_name);
}
}
}
謝謝Swr7der..it現在可以工作。 – c0der
我的榮幸:)快樂編碼@Avii – Swr7der