Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.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_Xml_Listview - Fatal编程技术网

Java 列表视图不显示

Java 列表视图不显示,java,android,xml,listview,Java,Android,Xml,Listview,我正在尝试制作一个活动,提供一个紧急电话号码列表,用户可以添加自己的自定义条目并保存它们。由于某些原因,ListView没有出现在活动上。我很确定我在CustomAdapter类中做错了什么,我让它在ListView的每个片段中保存两个文本框 我还试图将listView设置为使用触摸到的任何部分的电话号码启动电话活动,我不确定我是否正确执行了此操作 PhoneList.java: public class PhoneList extends AppCompatActivity { Ar

我正在尝试制作一个活动,提供一个紧急电话号码列表,用户可以添加自己的自定义条目并保存它们。由于某些原因,ListView没有出现在活动上。我很确定我在CustomAdapter类中做错了什么,我让它在ListView的每个片段中保存两个文本框

我还试图将listView设置为使用触摸到的任何部分的电话号码启动电话活动,我不确定我是否正确执行了此操作

PhoneList.java:

public class PhoneList extends AppCompatActivity {

    ArrayList<String> customList;
    ArrayList<String> numList;
    Bundle b;
    TinyDB tinydb;
    CustomAdapter dataAdapter;
    ListView phoneListView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_phone_list);
        phoneListView = (ListView)findViewById(R.id.listViewPhone);
        Integer num = null;
        String label = "";
        customList = null;
        numList = null;
        tinydb = new TinyDB(this);
        Button saveContact = (Button)(findViewById(R.id.button4));

        b = new Bundle();


        customList = tinydb.getListString("label");
        ArrayList<Integer> temp = tinydb.getListInt("num");
        for(int i = 0; i < temp.size(); i++){
            numList.add(temp.get(i).toString());
        }


        saveContact.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                EditText enteredLabel = (EditText)findViewById(R.id.editText2);
                EditText enteredNum = (EditText)findViewById(R.id.editText);
                String label = enteredLabel.getText().toString();
                Integer num = Integer.parseInt(enteredNum.getText().toString());
                b.putString("label",label);
                b.putInt("num",num);
                addPhoneItem();


            }
        });


        ArrayList<String> phoneList = new ArrayList<>();
        phoneList.add("Emergencies");
        phoneList.add("Travel Info ");
        phoneList.add("Poison Control ");
        phoneList.add("AAA: 1(800)836-2582");
        if(customList != null && customList.size() > 0) phoneList.addAll(customList);

        ArrayList<String> numberList = new ArrayList<>();
        numberList.add("911");
        numberList.add("511");
        numberList.add("18002221222");
        numberList.add("18008362582");
        if(numList != null && numList.size()>0) {
            for (int i = 0; i < numList.size(); i++) {
                numberList.add(numList.get(i).toString());
            }
        }



        dataAdapter = new CustomAdapter(this,numberList,phoneList);
        phoneListView.setAdapter(dataAdapter);


    }
    public void addPhoneItem(){
        customList.add(b.getString("label"));
        numList.add(b.getString("num"));
        tinydb.putListString("label",customList);
        tinydb.putListString("num",numList);
        dataAdapter = new CustomAdapter(this,numList,customList);
        phoneListView.setAdapter(dataAdapter);

    }
    private class CustomAdapter extends ArrayAdapter<String> {
        ArrayList<String> labels;
        ArrayList<String> nums;
        Context context;

        public CustomAdapter(Context context, ArrayList<String> n,ArrayList<String> l) {
            super(context,R.layout.phone_item);
            this.context = context;
            labels = new ArrayList<String>();
            labels.addAll(l);
            nums = new ArrayList<String>();
            nums.addAll(n);
        }

        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            try {
                ViewHolder holder = null;
                if (convertView == null) {
                    LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                    convertView = vi.inflate(R.layout.phone_item, null);
                    holder = new ViewHolder();
                    holder.viewLabel = (TextView) convertView.findViewById(R.id.editText);
                    holder.viewNumber = (TextView) convertView.findViewById(R.id.editText2);
                    convertView.setTag(holder);


                } else {
                    holder = (ViewHolder) convertView.getTag();
                }

                String label = labels.get(position);
                String num = nums.get(position);
                holder.viewLabel.setText(label);
                holder.viewNumber.setText(num);
                holder.viewNumber.setTag(num);
                holder.viewNumber.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        String str = "tel:" + (EditText) v.getTag();
                        Intent intent = new Intent(Intent.ACTION_CALL);
                        intent.setData(Uri.parse(str));
                        try {
                            startActivity(intent);
                        } catch (Exception e) {
                            Toast.makeText(getContext(),"Exception Caught in CustomAdapter",Toast.LENGTH_SHORT).show();
                        }
                    }
                });



            }
            catch(Exception e){
                Toast.makeText(getContext(),"Exception caught",Toast.LENGTH_SHORT).show();

            }
            return convertView;

        }

    }
    private class ViewHolder{
        TextView viewLabel;
        TextView viewNumber;
    }
}
公共类电话列表扩展了AppCompative活动{
ArrayList自定义列表;
ArrayList numList;
束b;
TinyDB TinyDB;
自定义适配器数据适配器;
ListView电话ListView;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u phone\u list);
phoneListView=(ListView)findViewById(R.id.listViewPhone);
整数num=null;
字符串标签=”;
customList=null;
numList=null;
tinydb=新的tinydb(本);
按钮保存联系人=(按钮)(findViewById(R.id.button4));
b=新的束();
customList=tinydb.getListString(“标签”);
ArrayList temp=tinydb.getListInt(“num”);
对于(int i=0;i0)phoneList.addAll(customList);
ArrayList numberList=新的ArrayList();
编号列表添加(“911”);
数字列表添加(“511”);
编号列表添加(“1800222222”);
编号列表添加(“18008362582”);
如果(numList!=null&&numList.size()>0){
对于(int i=0;i
activity_phone_list.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res``/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.rvtripapp.dempsey.rvtripapp.PhoneList">

<ListView
    android:layout_width="wrap_content"
    android:layout_height="400dp"
    android:id="@+id/listViewPhone"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true" />

<EditText
    android:layout_width="200dp"
    android:layout_height="wrap_content"
    android:id="@+id/editText"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:editable="true"
    android:hint="Label" />

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="number"
    android:ems="10"
    android:id="@+id/editText2"
    android:layout_below="@+id/editText"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:hint="Phone Number" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="+"
    android:id="@+id/button4"
    android:textSize="40dp"
    android:background="#44fe66"
    android:layout_alignBottom="@+id/editText2"
    android:layout_alignRight="@+id/listView"
    android:layout_alignEnd="@+id/listView" />
</RelativeLayout>

phone_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="New Text"
    android:id="@+id/textView2" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="New Text"
    android:id="@+id/textView3" />
</LinearLayout>


非常感谢您的帮助。

将超级关键字行更改为

    super(context,R.layout.phone_item, n);

您是否尝试重写CustomAdapter类的getCount方法

@Override
public int getCount() {
    return labels.size();
}

您正在onCreate()外部设置自定义适配器。请尝试在onCreate()内部设置它。

首先检查
“http://schemas.android.com/apk/res``/一个