2014-09-24 45 views
-1

我已经创建了具有两个文本视图和一个编辑文本的自定义列表视图,并且在自定义列表视图下有一个编辑文本(textPostalAddress),我想要做的是当用户在自定义列表视图的编辑文本中输入值时,我希望将该记录添加到列表视图下方的编辑文本中,当用户再次输入该值时,该值也会在编辑文本中显示与以前的值。如何在编辑文本中显示自定义列表视图记录

public class MainActivity extends Activity { 
ArrayList<Candy> myArrList; 
EditText text; 
EditText et; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    myArrList = new ArrayList<Candy>(); 
    ListView lisView1 = (ListView)findViewById(R.id.listView1); 
    et=(EditText)findViewById(R.id.editText1);  
    myArrList.add(new Candy("Butterscotch", "10")); 
    myArrList.add(new Candy("Birthday Cake", "100")); 
    myArrList.add(new Candy("Black Crunch", "102")); 
    myArrList.add(new Candy("Industrial Chocolate", "200")); 
    myArrList.add(new Candy("Coffee Molasses Chip", "500"));  
    lisView1.setAdapter(new CountryAdapter(this));} 
    public class CountryAdapter extends BaseAdapter 
    { 
    private Context context; 
    public CountryAdapter(Context c) 
    { 
     context = c; 
    } 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return myArrList.size(); 
     } 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return position; 
     } 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return position; 
     } 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     LayoutInflater inflater = (LayoutInflater) context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     if (convertView == null) { 
      convertView = inflater.inflate(R.layout.activity_mmnue, null); 
      } 
     // ColID 
     TextView txtID = (TextView) convertView.findViewById(R.id.nm); 
     txtID.setText(myArrList.get(position).getName() +"."); 
     // ColCode 
     TextView txtCode = (TextView) convertView.findViewById(R.id.rat); 
     txtCode.setText(myArrList.get(position).getRate()); 
     text = (EditText)convertView.findViewById(R.id.txtInput); 
     text.addTextChangedListener(new TextWatcher() { 
     public void onTextChanged(CharSequence s, int start, int before, int count){} 
     public void beforeTextChanged(CharSequence s, int start, int count,int after){} 
     public void afterTextChanged(Editable s) 
     { 
     String rk=myArrList.get(position).getName()+","+s+","+myArrList.get  (position).getRate(); 
        et.setText(rk); 
      Toast.makeText(getApplicationContext(), "hello"+s+""+myArrList.get 
         (position).getName()+""+myArrList.get(position).getRate(), 50).show(); 
            } 
          }); 
        return convertView;}} 

回答

0

从edittext中获取记录并将其添加到数组列表中。然后调用lisView1.invalidate();在列表视图中更新该记录

+0

请阅读我的问题妥善.. – Ravi 2014-09-24 07:14:17

+0

我想显示自定义列表的记录编辑文本是下面的列表视图,我不想更新我的列表视图。 – Ravi 2014-09-24 07:15:56

+0

in onTextChanged'text'的监听器add et.append(s.toString) – NIPHIN 2014-09-24 07:28:05

0

EditText难以用作每个ListView行中的项目。在我的脑海里一个解决方案,你应该使用Button的项目,而不是EditText,并通过点击此按钮打开一个AlertDialogEditText,输入的EditText按价值确定,并追加其在Edittext外面的listview例如在适配器的getView方法做类似如下:

Button btn = (Button)convertView.findViewById(R.id.btn); 
btn.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 

       showAlertDialog(); 

} 

}); 

private void showAlertDialog() 
    { 
     AlertDialog.Builder builder = new AlertDialog.Builder(context); 

     EditText input = new EditText(context); 

     builder.setTitle("Enter any value"); 

     builder.setView(input); 

     builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 

      @Override 
      public void onClick(DialogInterface dialog, int which) { 

       et.append(input.getText().toString()+" "); 

      } 
     }); 

     dialog.show(); 
    } 
相关问题