이 코드는 adapert에 새로운 항목을 추가 한 후 내 목록을 새로 고치지 않고 notifyDataSetChanged()
으로 업데이트 할 수 없습니다. 예를 들어이 줄에 대해서는 아무런 문제없이 설정할 수 있습니다.Android Refresh Adapter with BaseAdapter
adapter = new ReceivedAdapter(context, items);
getRequestFromServer(0, 10);
그 다음 목록 및 어댑터에 10 개 항목이 있습니다.
private String getRequestFromServer(long lastID, int count) {
String received = "";
try {
received = new JsonService(config_username, config_password, lastID, count, G.F_RECEIVE_SMS).request();
JSONArray data_array = new JSONArray(received);
String mUserID = config_username;
for (int i = 0; i < data_array.length(); i++) {
JSONObject json_obj = data_array.getJSONObject(i);
String mLastID = json_obj.getString("id_recived_sms");
String mSmsBody = json_obj.getString("sms_body");
String mSmsNumber = json_obj.getString("sms_number");
String mSenderName = json_obj.getString("mobile_number");
String mContactName = json_obj.getString("contact_name");
String mDate = json_obj.getString("recived_date");
ReceivedItemStructure item = new ReceivedItemStructure(
mLastID,
mUserID,
mSmsBody,
mSmsNumber,
mSenderName,
mContactName,
mDate
);
items.add(item);
}
setListAdapter(adapter);
} catch (Exception e) {
e.printStackTrace();
}
return received;
}
items.add(item);
수는 그 10
입니다. 지금이 bewlo의 기능을 한 후 11
private void addDataToList(String LastID, String SmsBody, String SmsNumber, String SenderName, String ContactName, String Date) {
String mLastID = LastID;
String mUserID = config_username;
String mSmsBody = SmsBody;
String mSmsNumber = SmsNumber;
String mSenderName = SenderName;
String mContactName = ContactName;
String mDate = Date;
ReceivedItemStructure item = new ReceivedItemStructure(
mLastID,
mUserID,
mSmsBody,
mSmsNumber,
mSenderName,
mContactName,
mDate
);
items.add(item);
adapter.setRow(items);
adapter.notifyDataSetChanged();
}
items.add(item);
수에 내 목록의 수를 변경할 수있는 서버 업데이트에서 새로운 I 아이템을 얻을 adapter.setRow()
와 그 11
사자 아 업데이트 어댑터입니다 ReceivedAdapter
로 내 List
크기는 11
입니다. addDataToList()
기능을 사용한 후 내 목록은 11
이지만 adapter.notifyDataSetChanged();
은 작동하지 않으며 어댑터 및 목록보기에 새 항목이 표시되지 않습니다. 추가 및 업데이트 List
의 모든 방법으로 items
패스를 가진 새 항목은 정상이며 ReceivedAdapter이고 문제가 없습니다.
내 어댑터는 다음과 같습니다
이public class ReceivedAdapter extends BaseAdapter
{
private LayoutInflater inflater;
private List<ReceivedItemStructure> row;
public ReceivedAdapter(Context context, List<ReceivedItemStructure> row)
{
this.row = row;
inflater = LayoutInflater.from(context);
}
public void setRow(List<ReceivedItemStructure> row) {
this.row = row;
}
@Override
public int getCount() {
return row.size();
}
@Override
public ReceivedItemStructure getItem(int position) {
return row.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
if(convertView ==null){
convertView = inflater.inflate(R.layout.received_sms_list_fragment, null);
}
TextView tv_smsBody = (TextView)convertView.findViewById(R.id.tv_smsBody);
tv_smsBody.setText(getItem(position).getmSmsBody());
TextView tv_smsSender = (TextView)convertView.findViewById(R.id.tv_smsSender);
tv_smsSender.setText(getItem(position).getmSmsBody());
TextView tv_smsDate = (TextView)convertView.findViewById(R.id.tv_smsDate);
tv_smsDate.setText(getItem(position).getmDate());
return convertView;
}
}
[질문을 반복하지 마십시오.] (http://stackoverflow.com/questions/26312082/android-arrayadapter-notifydatasetchanged-dont-work) 간단하게 당신이 새로운 정보로 원래의 질문에 업데이트 추가 할. –