我在片段活动中使用 BaseAdapter 在显示列表视图中遇到问题。
我没有收到任何错误日志,但列表视图没有显示,我不知道怎么解决这个问题?
My FragmentActivity类:
public class Fragment_Activity extends FragmentActivity {
/** Called when the activity is first created. */
private static final String TAB_1_TAG = "Invitation";
private static final String TAB_2_TAG = "Occasion";
private static final String TAB_3_TAG = "Friends";
private FragmentTabHost tabHost;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_tabs);
// Get TabHost Refference
tabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
tabHost.setup(this, getSupportFragmentManager(), android.R.id.tabcontent);
tabHost.addTab(tabHost.newTabSpec(TAB_1_TAG).setIndicator(""), InvitationFragment.class, null);
tabHost.addTab(tabHost.newTabSpec(TAB_2_TAG).setIndicator(""), OccasionFragment.class, null);
tabHost.addTab(tabHost.newTabSpec(TAB_3_TAG).setIndicator(""), ContactActivity.class, null);
// Set drawable images to tab
tabHost.getTabWidget().getChildAt(1).setBackgroundResource(R.drawable.ic_action_event);
tabHost.getTabWidget().getChildAt(2).setBackgroundResource(R.drawable.ic_action_phone);
// Set Tab1 as Default tab and change image
tabHost.getTabWidget().setCurrentTab(0);
tabHost.getTabWidget().getChildAt(0).setBackgroundResource(R.drawable.ic_action_person);
}
}
我的联系活动课程:
public class ContactActivity extends Fragment implements OnItemClickListener {
private Gson gson = new Gson();
private List<String> userName = new ArrayList<String>();
private List<String> mobileNumber = new ArrayList<String>();
private ContactDispAdapter contactDispAdapter;
private Button btnAdd;
private Button btnSend;
private ProgressDialog prgDialog;
UserDelegate userDelegate = new UserDelegate();
private Context context;
private HashMap<String, UserMO> userMosMapAll = new HashMap<String, UserMO>();
private ArrayList<UserMO> userMOs = new ArrayList<UserMO>();
private UserMO userMO = new UserMO();
private View V;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
V = inflater.inflate(R.layout.contactslistmain, container, false);
context = getActivity().getApplicationContext();
// in contact page click load button get all contacts from device and
// send to server and return matching user
// remove old values from list
userName.clear();
mobileNumber.clear();
// Instantiate Progress Dialog object
prgDialog = new ProgressDialog(getActivity());
// Set Progress Dialog Text
prgDialog.setMessage("Please wait...");
// Set Cancelable as False
prgDialog.setCancelable(false);
prgDialog.show();
final String[] mobileNumbers = Utility.getAllContacts(context.getContentResolver());
new AsyncTask<Void, Void, String>() {
@Override
protected String doInBackground(Void... arg0) {
return userDelegate.getMatchingExistingUserList(mobileNumbers, context);
}
@Override
protected void onPostExecute(String contactList) {
if (contactList != "null") {
Toast.makeText(context, "contact String" + contactList, Toast.LENGTH_LONG).show();
List<UserMO> userMOs = gson.fromJson(contactList, new TypeToken<List<UserMO>>() {
}.getType());
Toast.makeText(context, "total items of userMo" + userMOs.size(), Toast.LENGTH_LONG).show();
for (UserMO userMO : userMOs) {
userName.add(userMO.getUserName());
mobileNumber.add(userMO.getMobileNumber());
userMosMapAll.put(userMO.getMobileNumber(), userMO);
}
DatabaseHelper dbHelper = new DatabaseHelper(context);
long totalInsertion = dbHelper.insertUserRelationTable(userMOs);
prgDialog.dismiss();
Toast.makeText(context, "total userMos size " + userMOs.size() + "total db insertion size " + totalInsertion, Toast.LENGTH_LONG).show();
ListView contactListView = (ListView) V.findViewById(R.id.contact_List_view);
contactDispAdapter = new ContactDispAdapter();
contactListView.setAdapter(contactDispAdapter);
contactListView.setItemsCanFocus(false);
contactListView.setTextFilterEnabled(true);
contactListView.setOnItemClickListener(contactListView.getOnItemClickListener());
}
}
}.execute(null, null, null);
/*
* btnSend = (Button) V.findViewById(R.id.Btn_Send);
* btnSend.setOnClickListener(new OnClickListener() {
*
* @Override public void onClick(View arg0) { ; for (int i = 0; i <
* mobileNumber.size(); i++) { if
* (contactDispAdapter.mCheckStates.get(i) == true) { if
* (userMosMapAll.containsKey(mobileNumber.get(i).toString())) userMO =
* userMosMapAll.get(mobileNumber.get(i).toString());
* System.out.println("Checked......" + mobileNumber.get(i).toString());
* } else { System.out.println("Not Checked......" +
* mobileNumber.get(i).toString()); } }
*
* Intent chatAct = new Intent(context, ChatActivity.class); // Clears
* History of Activity chatAct.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
* chatAct.putExtra("userMo", userMO); startActivity(chatAct);
*
* } });
*/
btnAdd = (Button) V.findViewById(R.id.btn_Contact_Add);
btnAdd.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
DatabaseHelper dbHelper = new DatabaseHelper(context);
// by default first primary user is current user in sql lite
// user table
final UserMO userMO = dbHelper.getRingeeUserData(1);
System.out.println(".............." + contactDispAdapter.mCheckStates.size());
for (int i = 0; i < mobileNumber.size(); i++) {
if (contactDispAdapter.mCheckStates.get(i) == true) {
if (userMosMapAll.containsKey(mobileNumber.get(i).toString())) {
userMOs.add(userMosMapAll.get(mobileNumber.get(i).toString()));
}
System.out.println("Checked......" + mobileNumber.get(i).toString());
} else {
System.out.println("Not Checked......" + mobileNumber.get(i).toString());
}
}
new AsyncTask<Void, Void, String>() {
@Override
protected String doInBackground(Void... arg0) {
return userDelegate.addUserRelationShipMapping(userMOs, Long.toString(userMO.getRingeeUserId()));
}
@Override
protected void onPostExecute(String response) {
Toast.makeText(context, "response is " + response.toString(), Toast.LENGTH_LONG).show();
}
}.execute(null, null, null);
}
});
return V;
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
contactDispAdapter.toggle(arg2);
}
// add name and mobile number in adapter to show in contact page
private class ContactDispAdapter extends BaseAdapter implements CompoundButton.OnCheckedChangeListener {
private SparseBooleanArray mCheckStates;
LayoutInflater mInflater;
TextView mobileNumTxtV, userNameTxtV;
CheckBox cb;
ContactDispAdapter() {
mCheckStates = new SparseBooleanArray(userName.size());
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return userName.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return 0;
}
// show list values name and mobile number in contact page
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View vi = convertView;
if (convertView == null)
vi = mInflater.inflate(R.layout.contactlist, null,false);
userNameTxtV = (TextView) vi.findViewById(R.id.text);
mobileNumTxtV = (TextView) vi.findViewById(R.id.mobile_number);
cb = (CheckBox) vi.findViewById(R.id.check_box);
userNameTxtV.setText(userName.get(position));
mobileNumTxtV.setText(mobileNumber.get(position));
cb.setTag(position);
cb.setChecked(mCheckStates.get(position, false));
cb.setOnCheckedChangeListener(this);
return vi;
}
public boolean isChecked(int position) {
return mCheckStates.get(position, false);
}
public void setChecked(int position, boolean isChecked) {
mCheckStates.put(position, isChecked);
notifyDataSetChanged();
}
public void toggle(int position) {
setChecked(position, !isChecked(position));
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
mCheckStates.put((Integer) buttonView.getTag(), isChecked);
}
}
}
我的问题只是没有显示列表视图,我没有错误。 请帮我... 提前谢谢..