Java 如何使用自定义列表适配器检查ListView是否为空
我在我的应用程序中使用了两个Adpater,一个用于脱机模式,从本地sqlite DB获取数据。第二个适配器从服务器获取数据,并在listview中显示两个适配器共有的项。在列表中没有数据的情况下,我使用空视图显示列表为空。但即使sqlite中有数据,它仍然会显示空列表。我想知道有没有办法检查适配器是否为空。如果它不为null,则表示它应该显示列表中的值 脱机适配器:Java 如何使用自定义列表适配器检查ListView是否为空,java,android,sqlite,listview,baseadapter,Java,Android,Sqlite,Listview,Baseadapter,我在我的应用程序中使用了两个Adpater,一个用于脱机模式,从本地sqlite DB获取数据。第二个适配器从服务器获取数据,并在listview中显示两个适配器共有的项。在列表中没有数据的情况下,我使用空视图显示列表为空。但即使sqlite中有数据,它仍然会显示空列表。我想知道有没有办法检查适配器是否为空。如果它不为null,则表示它应该显示列表中的值 脱机适配器: public class ImageListAdapter extends BaseAdapter { Context
public class ImageListAdapter extends BaseAdapter {
Context context;
ArrayList<ImagelistItems> imageList;
public ImageListAdapter(Context context, ArrayList<ImagelistItems> list) {
this.context = context;
imageList = list;
}
@Override
public int getCount() {
return imageList.size();
}
@Override
public Object getItem(int position) {
return imageList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup arg2) {
ImagelistItems imagelistItems = imageList.get(position);
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.imagelist_items, null);
}
byte[] outImage = imagelistItems.getImage();
ByteArrayInputStream imageStream = new ByteArrayInputStream(outImage);
final Bitmap theImage = BitmapFactory.decodeStream(imageStream);
ImageView img = (ImageView) convertView.findViewById(R.id.imgview);
img.setImageBitmap(theImage);
final TextView merchname = (TextView) convertView.findViewById(R.id.lsmerchantname);
merchname.setText(imagelistItems.getMerchantname());
final TextView paid = (TextView) convertView.findViewById(R.id.lspaiddate);
paid.setText(imagelistItems.getPaidon());
TextView status = (TextView) convertView.findViewById(R.id.lsstatus);
status.setText(imagelistItems.getStatus());
final TextView amt = (TextView) convertView.findViewById(R.id.lsamount);
amt.setText(imagelistItems.getAmount());
ImageButton oofbutton = (ImageButton) convertView.findViewById(R.id.btnofflinebutton);
oofbutton.setVisibility(View.INVISIBLE);
final TextView category = (TextView) convertView.findViewById(R.id.lscategory);
category.setText(imagelistItems.getCategory());
final TextView paymode = (TextView) convertView.findViewById(R.id.lspaidwith);
paymode.setText(imagelistItems.getPaymmode());
final TextView comment = (TextView) convertView.findViewById(R.id.lscomment);
comment.setText(imagelistItems.getComment());
final TextView moneydet = (TextView) convertView.findViewById(R.id.moneydetails);
final String moen;
CurrenctSession currenctSession = new CurrenctSession(context);
if (currenctSession.isLoggedIn()) {
HashMap<String, String> cur = currenctSession.getUserDetails();
moen = cur.get(currenctSession.KEY_CURRENCY);
moneydet.setText(moen);
} else {
moneydet.setVisibility(View.INVISIBLE);
}
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String am = amt.getText().toString();
if (am.contains("km") | am.contains("m")) {
Intent i = new Intent(context, MapsDetailPage.class);
i.putExtra("distance", amt.getText().toString());
i.putExtra("origin", merchname.getText().toString());
i.putExtra("dest", paymode.getText().toString());
i.putExtra("catg", category.getText().toString());
i.putExtra("pdate", paid.getText().toString());
i.putExtra("comm", comment.getText().toString());
context.startActivity(i);
} else {
Intent i = new Intent(context, DetailsPage.class);
i.putExtra("bitmap", theImage);
i.putExtra("amount", amt.getText().toString());
i.putExtra("mername", merchname.getText().toString());
i.putExtra("paidon", paid.getText().toString());
i.putExtra("catg", category.getText().toString());
i.putExtra("paym", paymode.getText().toString());
i.putExtra("comm", comment.getText().toString());
context.startActivity(i);
}
}
});
return convertView;
}
}
公共类ImageListAdapter扩展了BaseAdapter{
语境;
ArrayList图像列表;
公共ImageListAdapter(上下文,ArrayList列表){
this.context=上下文;
imageList=列表;
}
@凌驾
public int getCount(){
返回imageList.size();
}
@凌驾
公共对象getItem(int位置){
返回imageList.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组arg2){
ImagelistItems ImagelistItems=imageList.get(位置);
if(convertView==null){
LayoutFlater充气器=(LayoutFlater)上下文
.getSystemService(上下文布局\充气机\服务);
convertView=充气机。充气(R.layout.imagelist_项,空);
}
字节[]outImage=imagelistItems.getImage();
ByteArrayInputStream imageStream=新的ByteArrayInputStream(outImage);
最终位图theImage=BitmapFactory.decodeStream(图像流);
ImageView img=(ImageView)convertView.findViewById(R.id.imgview);
设置图像位图(图像);
final TextView merchname=(TextView)convertView.findViewById(R.id.lsmerchantname);
merchname.setText(imagelistItems.getMerchantname());
final TextView paid=(TextView)convertView.findViewById(R.id.lspaiddate);
paid.setText(imagelistItems.getPaidon());
TextView状态=(TextView)convertView.findViewById(R.id.lsstatus);
status.setText(imagelistItems.getStatus());
最终文本视图金额=(文本视图)convertView.findViewById(R.id.lsamount);
amt.setText(imagelistItems.getAmount());
ImageButton oofbutton=(ImageButton)convertView.findViewById(R.id.btnofflinebutton);
oofbutton.setVisibility(View.INVISIBLE);
最终TextView类别=(TextView)convertView.findViewById(R.id.lscategory);
category.setText(imagelistItems.getCategory());
final TextView paymode=(TextView)convertView.findViewById(R.id.lspaidwith);
setText(imagelistItems.getPaymmode());
最终文本视图注释=(文本视图)convertView.findViewById(R.id.lscomment);
setText(imagelistItems.getComment());
final TextView moneydet=(TextView)convertView.findViewById(R.id.moneydetails);
最后一串moen;
CurrenctSession CurrenctSession=新的CurrenctSession(上下文);
if(currenctSession.isLoggedIn()){
HashMap cur=currenctSession.getUserDetails();
moen=当前获取(currenctSession.KEY\u CURRENCY);
moneydet.setText(moen);
}否则{
moneydet.setVisibility(视图不可见);
}
convertView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
字符串am=amt.getText().toString();
如果(上午包含(“km”)|上午包含(“m”)){
意图i=新意图(上下文,MapsDetailPage.class);
i、 putExtra(“距离”,amt.getText().toString());
i、 putExtra(“origin”,merchname.getText().toString());
i、 putExtra(“dest”,paymode.getText().toString());
i、 putExtra(“catg”,category.getText().toString());
i、 putExtra(“pdate”,paid.getText().toString());
i、 putExtra(“comm”,comment.getText().toString());
背景。起始触觉(i);
}否则{
意图i=新意图(上下文,DetailsPage.class);
i、 putExtra(“位图”,图像);
i、 putExtra(“金额”,amt.getText().toString());
i、 putExtra(“mername”,merchname.getText().toString());
i、 putExtra(“paidon”,paid.getText().toString());
i、 putExtra(“catg”,category.getText().toString());
i、 putExtra(“paym”,paymode.getText().toString());
i、 putExtra(“comm”,comment.getText().toString());
背景。起始触觉(i);
}
}
});
返回视图;
}
}
联机适配器:
public class CustomlistJsonadapter extends BaseAdapter {
private Activity activity;
private LayoutInflater inflater;
private List<ReceiptMov> movieItems;
public CustomlistJsonadapter(Activity activity, List<ReceiptMov> movieItems) {
this.activity = activity;
this.movieItems = movieItems;
}
@Override
public int getCount() {
return movieItems.size();
}
@Override
public Object getItem(int location) {
return movieItems.get(location);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (inflater == null)
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null)
convertView = inflater.inflate(R.layout.onlineimagelist_items, null);
final TextView merchantname = (TextView) convertView.findViewById(R.id.olsmerchantname);
final TextView paiddate = (TextView) convertView.findViewById(R.id.olspaiddate);
final TextView amounts = (TextView) convertView.findViewById(R.id.olsamount);
final TextView paidwith = (TextView) convertView.findViewById(R.id.olspaidwith);
final TextView categ = (TextView) convertView.findViewById(R.id.olscategory);
final TextView comment = (TextView) convertView.findViewById(R.id.olscomment);
final TextView stast = (TextView) convertView.findViewById(R.id.olsstatus);
ImageView imgview = (ImageView) convertView.findViewById(R.id.oimgview);
ReceiptMov m = movieItems.get(position);
// Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
byte[] s = m.getMimage();
ByteArrayInputStream imageStream = new ByteArrayInputStream(s);
final Bitmap theImage = BitmapFactory.decodeStream(imageStream);
// Bitmap bm = BitmapFactory.decodeByteArray(s, 0 ,s.length);
imgview.setImageBitmap(theImage);
merchantname.setText(m.getMerchantname());
paiddate.setText("Paid on:" + m.getMerdate());
amounts.setText(m.getMeramount());
paidwith.setText(m.getMerpaid());
categ.setText(m.getMercategory());
comment.setText(m.getMecomment());
stast.setText("Status: " + "Uploaded");
final TextView moneydet = (TextView) convertView.findViewById(R.id.omoneydetails);
final String moen;
CurrenctSession currenctSession = new CurrenctSession(activity);
if (currenctSession.isLoggedIn()) {
HashMap<String, String> cur = currenctSession.getUserDetails();
moen = cur.get(currenctSession.KEY_CURRENCY);
moneydet.setText(moen);
} else {
moneydet.setVisibility(View.INVISIBLE);
}
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String am = amounts.getText().toString();
if (am.contains("km") | am.contains("m")) {
Intent i = new Intent(activity, MapsDetailPage.class);
i.putExtra("distance", amounts.getText().toString());
i.putExtra("origin", merchantname.getText().toString());
i.putExtra("dest", paidwith.getText().toString());
i.putExtra("catg", categ.getText().toString());
i.putExtra("pdate", paiddate.getText().toString());
i.putExtra("comm", comment.getText().toString());
activity.startActivity(i);
} else {
Intent i = new Intent(activity, DetailsPage.class);
i.putExtra("bitmap", theImage);
i.putExtra("amount", amounts.getText().toString());
i.putExtra("mername", merchantname.getText().toString());
i.putExtra("paidon", paiddate.getText().toString());
i.putExtra("catg", categ.getText().toString());
i.putExtra("paym", paidwith.getText().toString());
i.putExtra("comm", comment.getText().toString());
activity.startActivity(i);
}
}
});
return convertView;
}
}
公共类CustomlistJsonadapter扩展了BaseAdapter{
私人活动;
私人充气机;
私人电影项目清单;
公共CustomlistJsonadapter(活动,列出电影项目){
这个。活动=活动;
this.movieItems=movieItems;
}
@凌驾
public int getCount(){
返回movieItems.size();
}
@凌驾
公共对象getItem(int位置){
返回电影项目。获取(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
如果(充气器==null)
充气器=(充气器)活动
.getSystemService(上下文布局\充气机\服务);
if(convertView==null)
convertView=充气机。充气(R.layout.onlineimagelist_项,空);
最终文本视图商品名称=(文本视图)convertView.findViewById(R.id.ol
if(imageListAdapter!=null){
DatabaseHandler db = new DatabaseHandler(getApplicationContext());
// Spinner Drop down elements
// List<String> lables = db.getAllLabels();
ArrayList<ImagelistItems> list = new ArrayList<ImagelistItems>();
list = db.getAllLabels();
imageListAdapter = new ImageListAdapter(
ListMode.this, list);
if (loginSession.isLoggedIn()) {
loginSession.checkLogin();
listView.setAdapter(imageListAdapter);
// listView.setEmptyView(findViewById(R.id.empty));
Toast.makeText(getApplicationContext(), db.getSyncStatus(), Toast.LENGTH_LONG).show();
} else {
Intent i = new Intent(ListMode.this, LoginPAge.class);
startActivity(i);
ListMode.this.finish();
}
}else{
listView.setEmptyView(findViewById(R.id.empty));
}
if(adapter.getCount()>0)
{
//some rows of listview
}
else
{
//listview is empty
}
ImageListAdapter imageListAdapter= new ImageListAdapter();
listviewObject.setAdapter(imageListAdapter);
if (imageListAdapter!= null)
if (imageListAdapter.getCount() > 0){
// implement your work
}else {
// do whatever you want on empty list adapter
}
if (adapter!=null) {
if (adapter.getCount() > 0) {
// listView not empty
} else {
// listView empty
}
}
TextView empty = (TextView) findViewById(android.R.id.empty);
listView.setEmptyView(empty);
listView.setAdapter(adapter);
list_view.setAdapter(adapter);
if (adapter.getCount() > 0) {
} else {
Toast.makeText(getApplicationContext(), "NO Data Available..", Toast.LENGTH_SHORT).show();
}
if(mAdapter.getItemCount()==0)
{
Toast.makeText(UpdatePorder.this, "list is filled", Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(UpdatePorder.this, "List is empty", Toast.LENGTH_SHORT).show();
}