Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.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
Android ListView中的检查列表项_Android_Listview_Android Asynctask_Baseadapter - Fatal编程技术网

Android ListView中的检查列表项

Android ListView中的检查列表项,android,listview,android-asynctask,baseadapter,Android,Listview,Android Asynctask,Baseadapter,我已经使用BaseAdapter成功地将项目放入ListView,我想问的是。。。是否可以在onCreate()中检查ListView是否为空,或者在onCreate()中获取总列表计数?谢谢 import android.content.Context; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; imp

我已经使用
BaseAdapter
成功地将项目放入
ListView
,我想问的是。。。是否可以在
onCreate()
中检查
ListView
是否为空,或者在
onCreate()
中获取总列表计数?谢谢

import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import java.util.ArrayList;


public class CustomAdapter extends BaseAdapter {
    Context context;
    ArrayList<Contact> list;
    private static LayoutInflater inflater;

    public CustomAdapter(Context context,ArrayList<Contact> list){
        this.context = context;
        this.list = list;
    }
    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int position) {
        return list.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if(inflater == null)
            inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        if(convertView == null)
            convertView = inflater.inflate(R.layout.list_contact,null);
        TextView id = (TextView) convertView.findViewById(R.id.id_keranjang);
        TextView name = (TextView) convertView.findViewById(R.id.name);
        TextView address = (TextView) convertView.findViewById(R.id.contact);

        int contact_id = list.get(position).getId();
        String contact_name = list.get(position).getName();
        String contact_address = list.get(position).getAddress();

        id.setText(String.valueOf(contact_id));
        kode.setText(contact_name);
        judul.setText(contact_address);

        return convertView;
    }
}
导入android.content.Context;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.BaseAdapter;
导入android.widget.TextView;
导入java.util.ArrayList;
公共类CustomAdapter扩展了BaseAdapter{
语境;
数组列表;
私人静电充气机;
公共CustomAdapter(上下文上下文,ArrayList列表){
this.context=上下文;
this.list=列表;
}
@凌驾
public int getCount(){
返回list.size();
}
@凌驾
公共对象getItem(int位置){
返回列表。获取(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
如果(充气器==null)
充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
if(convertView==null)
convertView=充气机。充气(右布局。列表\触点,空);
TextView id=(TextView)convertView.findViewById(R.id.id_keranjang);
TextView name=(TextView)convertView.findViewById(R.id.name);
TextView地址=(TextView)convertView.findViewById(R.id.contact);
int contact_id=list.get(position.getId();
字符串contact_name=list.get(position.getName();
字符串contact_address=list.get(position.getAddress();
id.setText(String.valueOf(contact_id));
kode.setText(联系人姓名);
judul.setText(联系地址);
返回视图;
}
}
主要活动

public class MainActivity extends AppCompatActivity {
        private static final String URL = "http://domain/contact.php";
        CustomAdapter customAdapter;
        int success = 0;
        JSONParser jsonParser = new JSONParser();
        ArrayList<Contact> listContact = new ArrayList<Contact>();
        JSONObject json=null;
        JSONArray contact=null;ListView li;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            li = (ListView) findViewById(R.id.listView);

            new getContactAsync().execute();

            //int c = li.getAdapter().getCount(); not working

        }
    class getContactAsync extends AsyncTask<String,String,ArrayList<Contact>>{


            @Override
            protected ArrayList doInBackground(String... params) {
                    json = jsonParser.getFromURL(URL);
                try {
                    contact = json.getJSONArray("contact");
                    success = json.getInt(TAG_SUCCESS);
                    if (success == 1) {
                        for (int i = 0; i < contact.length(); i++) {
                            JSONObject c = contact.getJSONObject(i);
                            Contact a = new Contact();
                            a.setId(c.optInt(TAG_ID));
                            a.setName(c.optString(TAG_NAME));
                            a.setAddress(c.optString(TAG_ADDRESS));
                            listContact.add(a);
                        }
                    }
                } catch (JSONException e) {
                    Log.d("ERROR", e.toString());
                }
                return listContact;
            }

            @Override
            protected void onPostExecute(ArrayList<Contact> s) {
                super.onPostExecute(s);
                customAdapter = new CustomAdapter(MainActivity.this,listContact);
                li.setAdapter(customAdapter);
            }
        }
public类MainActivity扩展了AppCompatActivity{
私有静态最终字符串URL=”http://domain/contact.php";
自定义适配器自定义适配器;
int成功=0;
JSONParser JSONParser=新的JSONParser();
ArrayList listContact=新建ArrayList();
JSONObject json=null;
JSONArray contact=null;ListView li;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
li=(ListView)findViewById(R.id.ListView);
新建getContactAsync().execute();
//int c=li.getAdapter().getCount();不工作
}
类getContactAsync扩展了AsyncTask{
@凌驾
受保护的ArrayList doInBackground(字符串…参数){
json=jsonParser.getFromURL(URL);
试一试{
contact=json.getJSONArray(“contact”);
success=json.getInt(TAG_success);
如果(成功==1){
对于(int i=0;i
在您的活动中,您有
列表联系人
,请务必获取此联系人的大小,因为这是您传递给适配器的内容

listContact.size ()

您只需使用自己的BaseAdapter方法
getCount()

但是,您应该在初始化变量
customAdapter
之后,以及在您为其定义的AsyncTask
getContactAsync
中为其赋值之后执行此操作

是否可以检查oncreate中的listview是否为空


如果\u listview中的\u元素\u的值
number\u为0,则listview将没有元素。

在创建适配器对象之前,您应该先在
onCreate
中将其签入
onPostExecute

@Override
protected void onPostExecute(ArrayList<Contact> s) {
    super.onPostExecute(s);
    if(listContact.size()>0){
       customAdapter = new CustomAdapter(MainActivity.this,listContact);
       li.setAdapter(customAdapter);
    }
}
@覆盖
PostExecute上受保护的void(ArrayList s){
super.onPostExecute(s);
如果(listContact.size()>0){
customAdapter=新的customAdapter(MainActivity.this,listContact);
li.setAdapter(customAdapter);
}
}
这将仅在列表中包含项时创建适配器对象。如果为空,则不会创建适配器对象

@Override
protected void onPostExecute(ArrayList<Contact> s) {
    super.onPostExecute(s);
    if(listContact.size()>0){
       customAdapter = new CustomAdapter(MainActivity.this,listContact);
       li.setAdapter(customAdapter);
    }
}
现在,无论何时引用适配器,在以后执行任何操作之前,都应该检查它是否为null。

请尝试以下代码:-

public class MainActivity extends AppCompatActivity {
        private static final String URL = "http://domain/contact.php";
        CustomAdapter customAdapter;
        int success = 0;
        JSONParser jsonParser = new JSONParser();
        ArrayList<Contact> listContact = new ArrayList<Contact>();
        JSONObject json=null;
        JSONArray contact=null;ListView li;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            li = (ListView) findViewById(R.id.listView);

            new getContactAsync().execute();

            //int c = li.getAdapter().getCount(); not working

        }
    class getContactAsync extends AsyncTask<String,String,ArrayList<Contact>>{


            @Override
            protected ArrayList doInBackground(String... params) {
                    json = jsonParser.getFromURL(URL);
                try {
                    contact = json.getJSONArray("contact");
                    success = json.getInt(TAG_SUCCESS);
                    if (success == 1) {
                        for (int i = 0; i < contact.length(); i++) {
                            JSONObject c = contact.getJSONObject(i);
                            Contact a = new Contact();
                            a.setId(c.optInt(TAG_ID));
                            a.setName(c.optString(TAG_NAME));
                            a.setAddress(c.optString(TAG_ADDRESS));
                            listContact.add(a);
                        }
                    }
                } catch (JSONException e) {
                    Log.d("ERROR", e.toString());
                }
                return listContact;
            }

            @Override
            protected void onPostExecute(ArrayList<Contact> s) {
            super.onPostExecute(s);

            if(listContact.size()>0)
            {
              customAdapter = new CustomAdapter(MainActivity.this,listContact);
              li.setAdapter(customAdapter);
            }
            else
            {
            //empty
            }
  }
public类MainActivity扩展了AppCompatActivity{
私有静态最终字符串URL=”http://domain/contact.php";
自定义适配器自定义适配器;
int成功=0;
JSONParser JSONParser=新的JSONParser();
ArrayList listContact=新建ArrayList();
JSONObject json=null;
JSONArray contact=null;ListView li;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
li=(ListView)findViewById(R.id.ListView);
新建getContactAsync().execute();
//int c=li.getAdapter().getCount();不工作
}
类getCon