在android中更新自定义列表中的特定项

在android中更新自定义列表中的特定项,android,android-listview,Android,Android Listview,在我的android应用程序中,我使用自定义列表显示日志,其中包含电话号码和发送状态项。当我向手机号码发送短信时,我会将手机和状态更新为挂起。 当短信发送时,我想更新为特定客户发送的状态。如何做到这一点。请查找我用于我的应用程序的代码 多谢各位 myactivity public class MainActivity extends Activity { private ListView listview1; private Vector<Data> datas = null; pr

在我的android应用程序中,我使用自定义列表显示日志,其中包含电话号码和发送状态项。当我向手机号码发送短信时,我会将手机和状态更新为挂起。 当短信发送时,我想更新为特定客户发送的状态。如何做到这一点。请查找我用于我的应用程序的代码

多谢各位

myactivity

public class MainActivity extends Activity {
private ListView listview1;
private Vector<Data> datas = null;
private DataAdapter adapter = null; 
private int clickCounter = 0;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    datas = new Vector<Data>();
    adapter = new DataAdapter(this, R.layout.listview_item_row, datas);
    listview1 = (ListView)findViewById(R.id.listView1);
    View header = (View)getLayoutInflater().inflate(R.layout.listview_header_row, null);
    listview1.setAdapter(adapter);
 }

public void sendSMS() {
    Data data1 = new Data(R.drawable.ic_launcher, "987654321", "Pending");
    datas.add(0, data1);
    adapter.notifyDataSetChanged();
}
}
公共类MainActivity扩展活动{
私有列表视图列表视图1;
私有向量数据=null;
私有DataAdapter=null;
私有int clickCounter=0;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
数据=新向量();
adapter=新数据适配器(此,R.layout.listview\u item\u行,数据);
listview1=(ListView)findViewById(R.id.listview1);
视图标题=(视图)GetLayoutFlater()。充气(R.layout.listview\u header\u行,空);
listview1.setAdapter(适配器);
}
公共无效发送SMS(){
Data data1=新数据(R.drawable.ic_启动器,“987654321”,“待定”);
数据添加(0,数据1);
adapter.notifyDataSetChanged();
}
}
数据适配器类

public class DataAdapter extends ArrayAdapter<Data>{
Context context;
int layoutResouceId;
Vector<Data> datas = null;

public DataAdapter(Context context, int layoutResourceId, Vector<Data> datas){
    super(context, layoutResourceId, datas);
    this.context = context;
    this.layoutResouceId = layoutResourceId;
    this.datas = datas;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;
    DataHolder holder = null;

    if( row == null ){
        LayoutInflater inflater = ((Activity)context).getLayoutInflater();
        row = inflater.inflate(layoutResouceId, parent, false);

        holder = new DataHolder();
        holder.phoneno = (TextView)row.findViewById(R.id.phoneno);
        holder.status = (TextView)row.findViewById(R.id.status);

        row.setTag(holder);
    }
    else {
        holder = (DataHolder)row.getTag();
    }

    Data data = datas.get(position);
    holder.txtPhoneno.setText(data.title);
    holder.txtStatus.setText(data.desc);        
    return row;
}

static class DataHolder {
    TextView txtPhoneno;
    TextView txtStatus;
}
}
公共类DataAdapter扩展了ArrayAdapter{
语境;
内部布局图;
向量数据=null;
公共数据适配器(上下文上下文、int-layoutResourceId、向量数据){
超级(上下文、布局资源ID、数据);
this.context=上下文;
this.layoutResourceId=layoutResourceId;
this.datas=datas;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图行=转换视图;
数据持有者=null;
if(行==null){
LayoutInflater充气器=((活动)上下文)。getLayoutInflater();
row=充气机。充气(LAYOUTRESOUCID,父级,false);
holder=新数据持有者();
holder.phoneno=(TextView)row.findViewById(R.id.phoneno);
holder.status=(TextView)row.findViewById(R.id.status);
row.setTag(支架);
}
否则{
holder=(DataHolder)row.getTag();
}
数据=数据获取(位置);
holder.txtPhoneno.setText(数据.标题);
holder.txtStatus.setText(data.desc);
返回行;
}
静态类数据保持器{
TextView txtPhoneno;
TextView txtStatus;
}
}

我想你会发现这很有用sms没有问题,我希望在listview中更新,因为你需要知道它是否已交付。我认为理解我的问题时有问题,我只想知道如何在listview中更新状态,我成功地实现了sms部分。我认为您需要使用一些侦听器来通知您发送的消息,并根据这些信息可以将特定的信息状态设置为已发送