0
我想從用戶修改後的列表視圖中的Textviews中獲取數據。 所以後來在「descrec」的TextView將變更爲「已完成」行的用戶點擊從列表視圖中的Textviews中獲取數據
listView.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
TextView text2 = (TextView) view.findViewById(R.id.descrec);
if(text2.getText().toString().equals("Selected"))
{
text2.setText(Outstanding.outDesc[(int)id]);
}
else
{
text2.setText("Selected");
}
Log.i("you selected row number",String.valueOf(id));
}
});
一旦用戶完成選擇行並點擊「提交」按鈕,我應該用「選擇」字符串打印所有行在「descrec」Textview中,但它不打印任何內容。
public void submit (View view)
{
for (int i = 0; i < listView.getCount(); i++)
{
v = listView.getAdapter().getView(i, null, null);
TV = (TextView) v.findViewById(R.id.descrec);
if (TV.getText().toString().equals("Selected"))
{
//just to make sure descrec text has beeen changed somewhere
Log.i("descrec", (String) TV.getText());
}
//to check the Textview anyway
Log.i("descrec value", (String) TV.getText());
}
}
並打印完整行‘descrec’用戶更改爲‘選擇’之前給的TextView的原始值的結果。
這是選擇行並點擊提交按鈕後的結果。
這裏是完整的代碼
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_outstanding);
new MyAsync().execute();
}
class MyAsync extends AsyncTask<Void, Void, Void> {
protected void onPreExecute() {
Log.i("preexcute","first");
listView = (ListView)findViewById(R.id.listviewout);
Contactadapter2 = new contactadapter2(Outstanding.this , R.layout.rowrecord_layout);
listView.setAdapter(Contactadapter2);
BackgroundWorker Backgroundworker = new BackgroundWorker(Outstanding.this);
Backgroundworker.execute(type,Homescreen.userID);
}
@Override
protected Void doInBackground(Void... arg0) {
return null;
}
@Override
protected void onPostExecute(final Void unused) {
Log.i("postexcute","second");
for (int i = 0; i < outrecieptID.length; i++) {
Log.i("test", valueOf(i) + "out of" + valueOf(outrecieptID.length));
Contacts2 contacts2 = new Contacts2(Outstanding.outrecieptID[i], Outstanding.outAmount[i], Outstanding.outDesc[i]);
Contactadapter2.add(contacts2);
}
for(int i=0 ; i < listView.getCount() ; i++) {
v[i] = listView.getAdapter().getView(i, null, null);
}
listView.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
TextView text2 = (TextView) view.findViewById(R.id.descrec);
TV = (TextView) v[(int)id].findViewById(R.id.descrec);
if(text2.getText().toString().equals("Selected"))
{
text2.setText(Outstanding.outDesc[(int)id]);
}else
{
text2.setText("Selected");
TV.setText("Selected");
}
Log.i("you selected row number",String.valueOf(id));
}
});
}
}
public void submit (View view)
{
for (int i = 0; i < listView.getCount(); i++) {
// v = listView.getAdapter().getView(i, null, null);
TV = (TextView) v[i].findViewById(R.id.descrec);
if (TV.getText().toString().equals("Selected"))
{
//just to make sure descrec text has beeen changed somewhere
Log.i("descrec", (String) TV.getText());
}
//to see the Textview anyway
Log.i("descrec value", (String) TV.getText());
}
}
這裏是contactadapter代碼:
public class contactadapter2 extends ArrayAdapter {
List list= new ArrayList();
public contactadapter2(Context context, int resource) {
super(context, resource);
}
public void add(Contacts2 object) {
super.add(object);
list.add(object);
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row;
row=convertView;
ContentHolder contentHolder;
if(row==null)
{
LayoutInflater layoutInflater = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = layoutInflater.inflate(R.layout.rowrecord_layout,parent,false);
contentHolder = new ContentHolder();
contentHolder.recieptidout=(TextView) row.findViewById(R.id.recieptidrec);
contentHolder.amountout= (TextView) row.findViewById(R.id.amountrec);
contentHolder.descout= (TextView) row.findViewById(R.id.descrec);
row.setTag(contentHolder);
}
else
{
contentHolder = (ContentHolder)row.getTag();
}
Contacts2 contacts2 = (Contacts2) this.getItem(position);
contentHolder.recieptidout.setText(contacts2.getrecieptidrec());
contentHolder.amountout.setText(contacts2.getamountrec());
contentHolder.descout.setText(contacts2.getdescrec());
return row;
}
static class ContentHolder
{
TextView recieptidout,amountout,descout;
}
能否請您解釋一下我怎樣才能更新模型? –
你可以發佈你的代碼嗎? – Krish
我已經用完整的代碼更新了這篇文章。 –