Android片段BaseAdapter列表视图不起作用

时间:2015-03-10 14:32:01

标签: android android-fragments

我在片段活动中使用 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);
    }
}

}

我的问题只是没有显示列表视图,我没有错误。 请帮我... 提前谢谢..

0 个答案:

没有答案