2016-07-14 15 views
-2

これは私のアダプタクラスです。私のリストでは、シークバーとテキストを編集しています。編集テキストに表示する。私はすべての編集テキストから値を取得し、それらを合計してテキストビューを表示しようとしています。私はテキスト変更リスナを編集するときにそれをしたい。合計値はテキストビューで同時に変更されます。これで私を助けてください。リストビューを反復してすべての編集テキスト値の合計を取得し、テキストビューでテキストビューと値を表示する方法

public class CustomListAdapter extends BaseAdapter { 


    int value=0; 

    ArrayList<RowItem>exp_name=new ArrayList<RowItem>(); 
    Context context; 
    String TAG="myApp"; 
    StudyExpense study; 



    LayoutInflater inflater=null; 


    public CustomListAdapter(Context context,ArrayList<RowItem>exp_name) 
    { 

     this.context=context; 
     this.exp_name= exp_name; 
     inflater = LayoutInflater.from(this.context); 
    } 

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

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

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

    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     final View view; 
     view=inflater.inflate(R.layout.seek_items,null); 
     SeekBar seekBar=(SeekBar)view.findViewById(R.id.seekbarList); 
     TextView txtname=(TextView)view.findViewById(R.id.seekName); 


     final EditText txtprice=(EditText)view.findViewById(R.id.seekprice); 
     txtprice.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) { 


      } 

      @Override 
      public void afterTextChanged(Editable s) { 


      } 
     }); 


     if(exp_name.get(position).getSeekValue()==0) 
     { 
      seekBar.setProgress(0); 
      txtprice.setText("" + exp_name.get(position).getSeekValue()); 


     } 
     else{ 
      seekBar.setProgress(exp_name.get(position).getSeekValue()); 
      txtprice.setText("" + exp_name.get(position).getSeekValue()); 


     } 

     txtname.setText("" + exp_name.get(position).getTitle()); 

     seekBar.setTag(Integer.valueOf(position)); 
     seekBar.setId(position); 
     seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
      @Override 
      public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 


       txtprice.setText("" + progress); 

       exp_name.get(position).setSeekValue(progress); 
      } 

      @Override 
      public void onStartTrackingTouch(SeekBar seekBar) { 
       // int id; 
       // id = seekBar.getId(); 
       // String title = exp_name.get(id).getTitle(); 

      } 

      @Override 
      public void onStopTrackingTouch(SeekBar seekBar) { 

      } 
     }); 
     return view; 




    } 





} 

メインActivityクラス(研究費)

public class StudyExpense extends AppCompatActivity implements { 
    ListView listView; 
    Toolbar toolbar; 
    TextView total; 
    ArrayList exp_name = new ArrayList(); 
    TextView sum; 
    Button bt; 
    CustomListAdapter adapter; 

    String TAG = "myApp"; 

    public static final String[] titlelist = {"Study Expense", "Travelling Expense", "Household Expense", "Sports Expense", "Entertainment", 
      "Food Expense", "Misc Expense"}; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_study_expense); 
     toolbar = (Toolbar) findViewById(R.id.toolbar); 
     adapter = new CustomListAdapter(this, exp_name); 
     total = (TextView) findViewById(R.id.txt_total); 
     listView = (ListView) findViewById(R.id.listexp); 
     sum = (TextView) findViewById(R.id.seekprice); 
     bt=(Button)findViewById(R.id.button); 

     listView.setAdapter(new CustomListAdapter(StudyExpense.this, exp_name)); 
     for (int i = 0; i < titlelist.length; i++) { 
      RowItem item = new RowItem(); 

      item.setTitle(titlelist[i]); 

      exp_name.add(item); 


     } 
+0

あなたの要件を満たすためには、POJOクラスの変数を増やす必要があります。 – Nisarg

答えて

0

ありがとうStudyExpense

public class StudyExpense extends AppCompatActivity implements { 
    ListView listView; 
    public static ArrayList<Integer> valueslist; 
    ... 

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_study_expense); 
     toolbar = (Toolbar) findViewById(R.id.toolbar); 
     .... 
     for (int i = 0; i < titlelist.length; i++) { 
      RowItem item = new RowItem(); 
      item.setTitle(titlelist[i]); 
      exp_name.add(item); 
      } 
     listView.setAdapter(new CustomListAdapter(StudyExpense.this, exp_name)); 
     valueslist = new Arraylist<Integer>(exp_name.size()); 
     ...} 

であなたのリストのサイズのINT []配列を作成します。今すぐにCustomListAdapterクラスにいくつかの変更を行いますgetView()メソッド。

@Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     final View view; 
     view=inflater.inflate(R.layout.seek_items,null); 
     SeekBar seekBar=(SeekBar)view.findViewById(R.id.seekbarList); 
     TextView txtname=(TextView)view.findViewById(R.id.seekName); 


     final EditText txtprice=(EditText)view.findViewById(R.id.seekprice); 
     txtprice.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) { 

      StudyExpense.valueslist.set(position, Integer.parseInt(s.toString());); 
      } 

      @Override 
      public void afterTextChanged(Editable s) { 


      } 

    }); 

ここで、任意のボタンをクリックすると、hr sumが表示されます。

int sum = 0; 
for (int i=0; i<StudyExpense.valueslist.size(); i++){ 
    sum += StudyExpense.valueslist.get(i); 
} 
+0

これを試してみます。ありがとう –

+0

私はクリックイベントで追加をしたくありません。編集テキストの値が変更されたときに実行したいのですが、デフォルトではすべての編集テキストに0の値が割り当てられています。ユーザーがシークバーを使用すると、シークバーの値がeditextに表示されます。 –

関連する問題