2017-11-06 19 views
1

買い物リストアイテムがあります。最初に、私はhashmapのArrayListに格納し、次にArrayList position.Nowを使用して格納すると、新しいArrayListの内容に選択したリストビュー項目を追加します。これどうやってするの?選択リストビュー項目をarraylistに追加する方法

コードスニペット:

Shopping_list.java

public class Shopping_list extends AppCompatActivity { 

ArrayList<String> data; 
RelativeLayout norecord; 
private Dialog dialog ; 
ListView lv; 
Context ctx = this; 
ArrayList<HashMap<String, String>> contents = new ArrayList<HashMap<String, String>>(); 
ArrayList<HashMap<String,String>>contents_show=new ArrayList<HashMap<String,String>>(); 
HashMap<String, String> map; 
ListViewAdapter adapter; 


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

    Button checkout=(Button)findViewById(R.id.checkout); 

    lv=(ListView)findViewById(R.id.list_search); 


    norecord=(RelativeLayout)findViewById(R.id.norecord); 

    fetchShoppingData(); 


    checkout.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      if(contents.size()==0) 
      { 
       Toast.makeText(Shopping_list.this, "Please add some item in Cart", Toast.LENGTH_SHORT).show(); 
      } 

      else 
      { 
       startActivity(new Intent(Shopping_list.this,Shopping_cart.class).putExtra("data",contents)); 

      } 


     } 
    }); 

} 


class ListViewAdapter extends BaseAdapter { 


    Context mContext; 
    LayoutInflater inflater; 


    ListViewAdapter(){ 
     inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

    public class ViewHolder { 
     ImageView icon; 
     TextView title,price; 
     EditText quantity; 
     Button add,remove; 

    } 

    @Override 
    public int getCount() { 
     return contents_show.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return null; 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    public View getView(final int position, View view, ViewGroup parent) { 
     imgUrl="http://www.domainname.com/images/Product/medium/"; 
     final ViewHolder holder; 

     holder = new ViewHolder(); 


     view=inflater.inflate(R.layout.shopping_list_item,null); 


     holder.icon=(ImageView)view.findViewById(R.id.image_shooping); 
     holder.title=(TextView)view.findViewById(R.id.text_shopping); 
     holder.price=(TextView)view.findViewById(R.id.price_shopping); 
     holder.quantity=(EditText)view.findViewById(R.id.item_cart); 
     holder.add=(Button)view.findViewById(R.id.add_cart); 
     holder.remove=(Button)view.findViewById(R.id.remove_item); 

     view.setId(position); 


     HashMap<String, String> map = new HashMap<>(contents_show.get(position)); 

     holder.title.setText(map.get("name")); 

     holder.price.setText("Price : "+map.get("Amount")+ " Rs."); 


     Picasso.with(ctx).load(imgUrl+map.get("image")) 
       .placeholder(R.drawable.logo) 
       .error(R.drawable.errorlogo) 
       .into(holder.image); 


     holder.add.setOnClickListener(new View.OnClickListener() { 
      @Override 

      public void onClick(View v) 
      { 

        for(int i=0;i<contents.size;i++) 
         { 

         if( condition ?? ) 
         { 
      contents.add(contents_show.get(position)); 
         } 


       }  
      } }); 

     return view; 
    } 

} 


private void fetchShoppingData(){ 

    GetResponce as = new GetResponce(Shopping_list.this); 
    try { 
     String res = as.execute().get().toString(); 

     JSONObject jObj = null; 
     jObj = new JSONObject(res); 
     JSONArray jsonarray = jObj.getJSONArray("listproduct"); 

     jObj = jsonarray.getJSONObject(0); 
     if (jObj.getString("ResponseCode").contains("1")) { 
      norecord.setVisibility(View.GONE); 


       String response=jObj.getString("ResponseStatus"); 
       JSONArray jarray=new JSONArray(response); 
       for (int i = 0; i < jarray.length(); i++) { 
       JSONObject jsonobject = jarray.getJSONObject(i); 

       HashMap<String, String> map = new HashMap<>(); 

           map.put("name", datalist.get(position).getName()); 
           map.put("Amount", datalist.get(position).getAmt()); 
           map.put("image", imgUrl + datalist.get(position).getImg()); 
           map.put("tax",datalist.get(position).getTax()); 
           map.put("discount",datalist.get(position).getDiscount()); 
           map.put("productId",datalist.get(position).getProductId()); 
           map.put("bv",datalist.get(position).getBv()); 
           map.put("pv",datalist.get(position).getPv()); 


          contents_show.add(map); 


      } 

      setList(); 


     }else { 
        norecord.setVisibility(View.GONE); 
       } 
      } 

    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } catch (ExecutionException e) { 
     e.printStackTrace(); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 


} 



public void setList() { 
    runOnUiThread(new Runnable() { 
     public void run() { 
      lv.setAdapter(new ListViewAdapter()); 
      if (contents_show.size() == 0) { 
       norecord.setVisibility(View.VISIBLE); 


      } else { 
       norecord.setVisibility(View.GONE); 

      } 

     } 
    }); 
} } 

このコードを見て、problem.For例を解決するために私を助けてください、私は、ボタンを使用して2,4,7などの行を選択これらの行のハッシュマップデータは内容(ArrayList)に格納されます。

+0

てみましたか? –

答えて

1

これは、あなたは `lv.setOnItemClickListener()`で位置を取得する方法をすることができます

public class ViewHolder implements implements View.OnClickListener{ 
    ImageView icon; 
    TextView title,price; 
    EditText quantity; 
    Button add,remove; 

    public ViewHolder(view) { 
     //After Initilizing everything 
     itmView.setOnLongClickListener(this); 
    } 

    public void onClick(View v) { 
     Sting title = v.title.getText().toString(); 
     Sting quantity = v.quantity.getText().toString(); 

     Map<String,String> map = new HashMap<>(); 
     map.put(title, quantity); 
     contents.add(ab); 
    } 
} 
+0

誰も私に提案を与える方法私はホルダーを使用することができます。ボタンを追加し、選択されたボタンの値をコンテンツと呼ばれる新しいarraylistに保存します。 – curious

関連する問題