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
之后,以及在您为其定义的AsyncTaskgetContactAsync
中为其赋值之后执行此操作
是否可以检查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