【问题标题】:How to Show Data in Listview by geting data from database如何通过从数据库中获取数据在 Listview 中显示数据
【发布时间】:2014-05-08 08:56:48
【问题描述】:

我是一名新的 Android 开发人员,我想在列表视图中显示从 db 获取的数据,我正在使用 ArrayAdapter 但没有显示请任何人帮助我...

我的主要活动代码在这里

 public class SmsMerge extends Activity  {
        private ImageButton btn;
        private ImageButton imgb;
        private TemplateOperation templateDBoperation;
        ArrayList<List> arr;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_sms_merge);
            templateDBoperation = new TemplateOperation(this);
            templateDBoperation.open();
            List values = templateDBoperation.getAllTemplate();
            arr=new ArrayList<List>();
               arr.add((ArrayList<List>)values);
            ListView listview = (ListView)findViewById(android.R.id.list);
    MyListAdapter adpttt=new MyListAdapter(SmsMerge.this,R.layout.row,arr);
            listview.setAdapter(adpttt);

    }
    }

CustomAdapter 代码在这里

package com.example.sqliteapplication;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.MenuInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MyListAdapter extends ArrayAdapter<List> {
    List names;
    int inflatr;
    Context ctxt;
    ArrayList<List> data=new ArrayList<List>();
    public MyListAdapter(Context context, int layoutResourceId,
            ArrayList<List> data) {
        super(context, layoutResourceId, data);
        this.inflatr = layoutResourceId;
        this.ctxt = context;
        this.data= data;
    }

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        UserHolder holder = null;
         View row = convertView;
        if(convertView==null)
        {
             LayoutInflater inflater = ((Activity) ctxt).getLayoutInflater();
              row = inflater.inflate(inflatr, parent, false);
             holder = new UserHolder();
             holder.btnEdit = (Button) row.findViewById(R.id.atomPay_removePay);
             row.setTag(holder);
        }
        else
        {
             holder = (UserHolder) row.getTag();            
        }
        List dta=data.get(position);
        holder.btnEdit.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                 Toast.makeText(ctxt, "Humayoon    Siddiqueeeeeeeeeeeeeeeeeee", Toast.LENGTH_SHORT).show();
            }
        });
        return convertView;
    }
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return 0;
    }


    static class UserHolder {
        TextView textName;
        TextView textAddress;
        TextView textLocation;
        Button btnEdit;
        Button btnDelete;
        }



}

【问题讨论】:

    标签: android android-listview custom-adapter


    【解决方案1】:

    先更正一下

    return row;
    

    而不是

    return convertView;
    

    在您的 adapter getView(....) 方法中,并发布您的所有 logcat 并按照 @Biraj 所说修改 @Override getCount()

    在您更正的代码下方

     @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        UserHolder holder = null;
         View row = null;
        if(convertView==null)
        {
             LayoutInflater inflater = ((Activity) ctxt).getLayoutInflater();
             row = inflater.inflate(R.layout.row, parent, false);
             holder = new UserHolder();
             holder.btnEdit = (Button) row.findViewById(R.id.atomPay_removePay);
             row.setTag(holder);
        }
        else
        {
             holder = (UserHolder) row.getTag();            
        }
        List dta=data.get(position);
        holder.btnEdit.setOnClickListener(new OnClickListener() {
    
            @Override
            public void onClick(View v) {
                 Toast.makeText(ctxt, "Humayoon    Siddiqueeeeeeeeeeeeeeeeeee", Toast.LENGTH_SHORT).show();
            }
        });
        return row;
    }
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return data.size();
    }
    

    【讨论】:

    • 但是如何将该数据分配给每行显示的 TextView
    【解决方案2】:

    正如@Simple Plan 所说的

    先更正一下

    return row;
    

    而不是

    return convertView;
    

    也修改这个

    @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return data.size();
        }
    

    【讨论】:

    • 当你告诉我一些解决方案时,但有些东西显示在列表视图中,而不是第一行显示的数据,如图像图标和 false 和 btn 以及复选框如何显示数据
    【解决方案3】:
     @Override
        public int getCount() {
            return data.size();
        } 
    
     @Override
            public View getView(int position, View mView, ViewGroup parent) {
                mCursor = getCursor();
                mCursor.moveToPosition(position);
                if (mView == null) {
                    mView = mInflater.inflate(R.layout.listitem_create_edit_def, null);
                    mViewHolder = new ViewHolder();
    
                    //intializes view in a view holder
                    tvssfg = (TextView)mView.findViewById(R.id.tv_process_name);
                    btnsfdg = (Button) mView.findViewById(R.id.btn_add_steps);
                    btntrey = (Button) mView.findViewById(R.id.btn_add_tags);
                    checkProcess = (CheckBox) mView.findViewById(R.id.cb_process);
    
    
                    mView.setTag(mViewHolder);
                } 
                else
                    mViewHolder = (ViewHolder) mView.getTag();
    
                return mView;
    
            }
    

    像这样改变你的getview。希望这会对你有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多