Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 列表视图没有';不出现_Java_Android_Listview - Fatal编程技术网

Java 列表视图没有';不出现

Java 列表视图没有';不出现,java,android,listview,Java,Android,Listview,我尝试显示列表视图以显示我的数据 这是main_fragment.java public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view = inflater.inflate(R.layout.

我尝试显示
列表视图
以显示我的数据

这是
main_fragment.java

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment

    View view = inflater.inflate(R.layout.fragment_main, container, false);
    final List<import_fragment.Contact> Contacts = new ArrayList<import_fragment.Contact>();
    ListView contactListView;

    final EditText nametxt, emailTxt, phoneTxt, addressTxt;
    nametxt = (EditText) view.findViewById(R.id.txtName);
    emailTxt = (EditText) view.findViewById(R.id.txtEmail);
    phoneTxt = (EditText) view.findViewById(R.id.txtPhone);
    addressTxt = (EditText) view.findViewById(R.id.txtAddress);
    contactListView = (ListView) view.findViewById(R.id.listView);
    dbHandler = new DatabaseHandler(getActivity().getApplicationContext());

    final Button addBtn = (Button) view.findViewById(R.id.btnadd);
    addBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Uri imageUri = Uri.parse("android.resource://org.intracode.contactmanager/drawable/no_user_logo.png");
            import_fragment.Contact contact = new import_fragment.Contact(dbHandler.getContactsCount(), String.valueOf(nametxt.getText()), String.valueOf(phoneTxt.getText()), String.valueOf(emailTxt.getText()), String.valueOf(addressTxt.getText()), imageUri);
            if (!contactExists(contact)) {
                dbHandler.createContact(contact);
                Contacts.add(contact);
                if (contactAdapter != null) contactAdapter.notifyDataSetChanged();
                Toast.makeText(getActivity().getApplicationContext(), String.valueOf(nametxt.getText()) + " has been added to your Contacts!", Toast.LENGTH_SHORT).show();
            return;
            }
            Toast.makeText(getActivity().getApplicationContext(), String.valueOf(nametxt.getText()) + " already exists. Please use a different name.", Toast.LENGTH_SHORT).show();
        }
    });

    final Button addContact = (Button) view.findViewById(R.id.btnadd);

    nametxt.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

            addContact.setEnabled(!nametxt.getText().toString().trim().equals(""));


        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });
    return view;

}
ArrayAdapter<import_fragment.Contact> contactAdapter;
ListView contactListView;
DatabaseHandler dbHandler;
int longClickedItemIndex;
public void onActivityResult(int reqCode, int resCode, Intent data) {
    Uri imageUri = Uri.parse("android.resource://org.intracode.contactmanager/drawable/no_user_logo.png");
    ImageView contactImageImgView;
    contactImageImgView = (ImageView) getActivity().findViewById(R.id.ivContactImage);

    if (resCode == Activity.RESULT_OK) {
        if (reqCode == 1) {
            imageUri = data.getData();
            contactImageImgView.setImageURI(data.getData());
        }
    }
}

public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, view, menuInfo);

    {
        ImageView contactImageImgView;

        contactImageImgView = (ImageView) view.findViewById(R.id.ivContactImage);

        contactImageImgView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setType("image/*");
                intent.setAction(Intent.ACTION_GET_CONTENT);
                startActivityForResult(Intent.createChooser(intent, "Select Contact Image"), 1);
            }

        });


        if (dbHandler.getContactsCount() != 0)
            Contacts.addAll(dbHandler.getAllContacts());

        populateList();
    }

    menu.setHeaderIcon(R.drawable.pencil_icon);
    menu.setHeaderTitle("Contact Options");
    menu.add(Menu.NONE, EDIT, menu.NONE, "Edit Contact");
    menu.add(Menu.NONE, DELETE, menu.NONE, "Delete Contact");
}
public boolean onContextItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case EDIT:
            // TODO: Implement editing a contact
            break;
        case DELETE:
            dbHandler.deleteContact(Contacts.get(longClickedItemIndex));
            Contacts.remove(longClickedItemIndex);
            contactAdapter.notifyDataSetChanged();
            break;
    }

    return super.onContextItemSelected(item);
}


private boolean contactExists(import_fragment.Contact contact) {

    String name = contact.getName();
    int contactCount = Contacts.size();

    for (int i = 0; i < contactCount; i++) {
        if (name.compareToIgnoreCase(Contacts.get(i).getName()) == 0)
            return true;
    }
    return false;
}

private void populateList() {
    contactAdapter = new ContactListAdapter(getActivity());
    contactListView.setAdapter(contactAdapter);
}

final List<import_fragment.Contact> Contacts = new ArrayList<import_fragment.Contact>();

private class ContactListAdapter extends ArrayAdapter<import_fragment.Contact> {
    public ContactListAdapter(Context cntx) {
        super (cntx, R.layout.fragment_import, Contacts);
    }

    @Override
    public View getView(int position, View view, ViewGroup parent) {
        if (view == null)
            view = getActivity().getLayoutInflater().inflate(R.layout.fragment_import, parent, false);

        import_fragment.Contact currentContact = Contacts.get(position);

        TextView name = (TextView) view.findViewById(R.id.contactName);
        name.setText(currentContact.getName());
        TextView phone = (TextView) view.findViewById(R.id.phoneNumber);
        phone.setText(currentContact.getPhone());
        TextView email = (TextView) view.findViewById(R.id.emailAddress);
        email.setText(currentContact.getEmail());
        TextView address = (TextView) view.findViewById(R.id.cAddress);
        address.setText(currentContact.getAddress());


        return view;
    }
}


我的
listview
import\u fragment.xml
中,当我在应用程序中打开
import_fragment.xml
时,它只会显示联系人姓名、电话、电子邮件和地址,这是在
import_fragment.xml
中添加的,而不是用户在数据库中添加的新联系人信息。

将您的线性布局高度更改为

android:layout_height="fill_parent"
您的listView实际上“在那里”,只是listView的容器(布局)不够大,无法容纳它

编辑:

您正在定义两个不同的联系人列表!activity和adapter类都引用两个不同的联系人。删除onCreateView函数中的一个

final List<import_fragment.Contact> Contacts = new ArrayList<import_fragment.Contact>();
final List Contacts=new ArrayList();

将两个线性布局的高度都更改为

android:layout_height="fill_parent"
您的listView实际上“在那里”,只是listView的容器(布局)不够大,无法容纳它

编辑:

您正在定义两个不同的联系人列表!activity和adapter类都引用两个不同的联系人。删除onCreateView函数中的一个

final List<import_fragment.Contact> Contacts = new ArrayList<import_fragment.Contact>();
final List Contacts=new ArrayList();

您必须在
onCreateView
中设置适配器。当前,您正在
onCreateContextMenu
中填充列表。此外,设置适配器后,还必须调用
notifydatasetchange()

onCreateView
setAdapter
。当前,您正在
onCreateContextMenu
中填充列表。此外,在设置适配器后,您还必须调用
notifyDataSetChanged()

尝试这种方式,我在我的机器上尝试过,它正确地显示了
listview
,我已经使用了
weightSum
,因此它将适用于所有设备,只需将您的xml文件更改为下面的一个即可

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:weightSum="4">

    <ImageView
        android:id="@+id/ivContactImage"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1" />

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="3"
        android:orientation="vertical">

        <TextView
            android:id="@+id/contactName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="left|center_vertical"
            android:text="Contact Name"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <TextView
            android:id="@+id/phoneNumber"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="left|center_vertical"
            android:layout_marginTop="5dp"
            android:text="Phone" />

        <TextView
            android:id="@+id/emailAddress"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="left|center_vertical"
            android:text="Email" />

        <TextView
            android:id="@+id/cAddress"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="left|center_vertical"
            android:text="Address" />

        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="left|center_vertical"
            android:text="My Contacts"
            android:textAppearance="?android:attr/textAppearanceLarge" />

    </LinearLayout>
</LinearLayout>

<ListView
    android:id="@+id/listView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center" />


尝试这种方式,我在我的机器上尝试过,它正确地显示了
列表视图
,我使用了
weightSum
,因此它将适用于所有设备,只需将您的xml文件更改为以下一个即可

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:weightSum="4">

    <ImageView
        android:id="@+id/ivContactImage"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1" />

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="3"
        android:orientation="vertical">

        <TextView
            android:id="@+id/contactName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="left|center_vertical"
            android:text="Contact Name"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <TextView
            android:id="@+id/phoneNumber"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="left|center_vertical"
            android:layout_marginTop="5dp"
            android:text="Phone" />

        <TextView
            android:id="@+id/emailAddress"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="left|center_vertical"
            android:text="Email" />

        <TextView
            android:id="@+id/cAddress"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="left|center_vertical"
            android:text="Address" />

        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="left|center_vertical"
            android:text="My Contacts"
            android:textAppearance="?android:attr/textAppearanceLarge" />

    </LinearLayout>
</LinearLayout>

<ListView
    android:id="@+id/listView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center" />


为什么将父线性布局的高度设置为91dp?因此,我认为ListView上面不会有很多文本视图。我也将其更改为填充父视图,但我的数据库中的项目仍然不会显示@reypham为什么父线性布局的高度设置为91dp?因此,我认为ListView上面不会有很多TextView。我也将其更改为fill_parent,但我的数据库中的项目仍然不显示@ReyPhami在“onCreateView”中添加了它,但我在添加NullPointerException时出错,请告诉我如何正确添加它@Mustansar Saeedi在“onCreateView”中添加了它,但在添加它时出现了错误NullPointerException,请告诉我如何正确添加它@Mustansar Saeedi也更改为填充父项,但我数据库中的项目仍不显示@Jiyehi也更改为填充父项,但我数据库中的项目仍不显示@JiyehNo你的回答对我没有帮助。。我需要知道如何在onCreateView@Amit VaghelaNo中设置适配器您的回答对我没有帮助。。我需要知道如何在onCreateView@Amit Vaghela中设置适配器