2016-04-20 16 views
0

アダプタクラステキストビューでリストビューを作成し、減少ボタンを増やす方法は?

public class MyCustomAdapter extends BaseAdapter implements ListAdapter { 

    private ArrayList<String> list = new ArrayList<String>(); 
    private Context context; 



    /*public MyCustomAdapter(ArrayList<String> list, Context context) { 
     this.list = list; 
     this.context = context; 
    }*/ 
    public MyCustomAdapter(ArrayList<String> list, Context context) { 
     this.list = list; 
     this.context = context; 
    } 


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

    @Override 
    public Object getItem(int position) { 
     return list.get(position); 
    } 

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

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View view = convertView; 
     if (view == null) { 

     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     view = inflater.inflate(R.layout.custom_layout, null); 
    } 
     TextView name = (TextView) view.findViewById(R.id.text); 
     name.setText(list.get(position)); 
     final TextView milkCount = (TextView) view.findViewById(R.id.milkcount); 
     if (milkCount.getText().toString().trim() == null) { 
      milkCount.setText("0"); 
     } 
     ImageView increment = (ImageView) view.findViewById(R.id.add); 
     ImageView decrement = (ImageView) view.findViewById(R.id.sub_item); 
     increment.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       int a = Integer.parseInt(milkCount.getText().toString().trim()); 
       a = a + 1; 
       milkCount.setText("" + a); 
      } 
     }); 
     decrement.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       int a = Integer.parseInt(milkCount.getText().toString().trim()); 
      if (a == 0) { 
       a = 0; 
      } else { 
       a = a - 1; 
      } 
      milkCount.setText("" + a); 
     } 
    }); 
    return view; 
} 
} 

主な活動

public class DailyScreen extends AppCompatActivity implements 



AdapterView.OnItemClickListener { 


///Description 
ImageView add, edit; 
MyCustomAdapter adapter1; 
Button ok; 
Button next2; 

final Context context = this; 
ListView listView; 
private ArrayAdapter<String> adapter; 

public ArrayList<String> getArrayList() { 
    return arrayList; 
} 

public void setArrayList(ArrayList<String> arrayList) { 
    this.arrayList = arrayList; 
} 

private ArrayList<String> arrayList; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    // requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.daily_listview); 

    //initialization 
    add = (ImageView) findViewById(R.id.add); 
    edit = (ImageView) findViewById(R.id.edit); 
    listView = (ListView) findViewById(R.id.list); 
    next2 = (Button) findViewById(R.id.next2); 

    String items[] = {"toned milk"}; 
    //this.setArrayList((ArrayList<String>) Arrays.asList(items)); 
    arrayList = new ArrayList<>(Arrays.asList(items)); 
    adapter1 = new MyCustomAdapter(arrayList, this); 
    listView.setAdapter(adapter1); 
    listView.setOnItemClickListener(this); 
} 
@Override 
protected void onResume() { 
    super.onResume(); 
    next2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(DailyScreen.this, SupplierActivity.class); 
      startActivity(intent); 
     } 
    }); 


    add.setOnClickListener(new View.OnClickListener() 

    { 
     @Override 
     public void onClick(View v) { 
      final Dialog dialog = new Dialog(DailyScreen.this); 
      dialog.setTitle("Enter new Milk"); 
      dialog.setContentView(R.layout.dialog_box); 
      dialog.setCancelable(false);// to prevent the user when he click any where in the screen 
      dialog.setCanceledOnTouchOutside(false); 
      dialog.show(); 

      //initialization for edit text 
      final EditText editText = (EditText) dialog.findViewById(R.id.pro); 
      String data = editText.getText().toString(); 

ここで私は、私はテキストに関して減少nは増加したリストビューでテキストビューn個のボタンを持つようにしたいしようとしているどのようなコードがありますビュー。私はそれが私が追加したすべての項目の.so上記のすべての項目に0を設定し、新たなアイテムを追加しようとしているとき、私は0

ので、私を助けてください

image

  //button initialization 
      Button ok = (Button) dialog.findViewById(R.id.ok); 

      ok.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        String data = editText.getText().toString(); 
        if (!data.isEmpty()) { 
         arrayList.add(data); 
         adapter1=null; 
         adapter1 = new MyCustomAdapter(arrayList,DailyScreen.this); 
         listView.setAdapter(adapter1); 
         Toast.makeText(getApplicationContext(), "product name is :" + data, Toast.LENGTH_LONG).show(); 
         adapter1.notifyDataSetChanged();// to refresh with update one 

         dialog.cancel(); 

        } 
        else{ 
         Toast.makeText(DailyScreen.this, "Please enter the data", Toast.LENGTH_SHORT).show(); 
        } 


       } 
      }); 

     } 

    }); 



} 


@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    View k=view; 

} 
// to initialize Context menu 
@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { 
    super.onCreateContextMenu(menu, v, menuInfo); 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu_items, menu); 


} 


//checking to delete the item and refreshing the items 
@Override 
public boolean onContextItemSelected(MenuItem item) { 
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); 
    switch (item.getItemId()) { 
     case R.id.delete: 
      arrayList.remove(info.position); 
      //to refresh the list view 
      adapter.notifyDataSetChanged(); 
      return true; 
     default: 
      return super.onContextItemSelected(item); 


    } 
} 
} 
から開始する必要があります前に、
+0

:-) ...継続することができ、あなたはあなたが作るしようとして正確に何を適切に説明することができます?任意の例??あなたがどこかでそれを見たら??あなたの要求を理解できないからです。 –

+0

@VishalHalani私はリストビューを作成したいのですが、ボタンを追加したり減算したりすることによって管理されるアイテムと数量ボックスが必要になります....私が直面している問題は、新しいアイテムは、上記のアイテムのすべての量を0に戻しています....だから助けてください。 –

+0

こんにちはJyoti ..あなたはどんな問題に直面していますか? – Piyush

答えて

0

モデルオブジェクトの数量をマッピングするのではなく、常にnotifyDataSetChanged()を呼び出すと生成される新しいテキストビューからマッピングされていることがわかります。

あなたがそれを行うgetItem(position)を宣言しているが、コンストラクタであなたがlist

  • if (milkCount.getText().toString().trim() == null)
  • adapter1=null;、その後adapter1 = new ...
  • list.get(position)をinitiliazeながら、私はまた、

    • private ArrayList<String> list = new ArrayList<String>();のようないくつかの小さなプログラミングミスを参照してください。
    • final Context context = this;役に立たない。

    と私はハロー

  • +0

    時間をありがとう、あなたはそれを整流で私を助けることができます.. –

    +0

    Stringの代わりに、ID、タイトル、数量などを含むカスタムモデルオブジェクトを作成する必要があります。 これらのモデルアイテムでリストを初期化し、 'getItem()'を呼び出すときにバインディングですべてのデータを持つモデルオブジェクトを持っています。 RecyclerView用アダプタライブラリをお探しですか?プロジェクトはhttps://github.com/davideas/FlexibleAdapterですが、あなたはすべてを変更してListViewを放棄します。 – Davidea

    +0

    あなたは私を助けることができます@Davidea –

    関連する問題