显示从android中的Button中的数据库获取的数据

时间:2015-04-30 16:57:49

标签: android-sqlite

我知道如何从sqlite数据库中获取数据并将其显示在listview中。但我想知道如何根据从数据库中获取的数据(如颜色,文本等)更改按钮的属性。 我搜索了很多,但找不到任何相关的答案。 我们只能在列表视图中显示来自数据库的数据吗?

更新:我修改了我的代码,以便在列表视图中显示数据,如下所示:

    public class TextAdapter extends BaseAdapter {

    public ArrayList<Integer>  arr_Id = new ArrayList<Integer>();
    public ArrayList<String>  arr_Name = new ArrayList<String>();
    public ArrayList<String>  arr_Status = new ArrayList<String>();
    public ArrayList<String>  arr_Color = new ArrayList<String>();

    public int i = 0;
    private Context mContext;

    public  TextAdapter(Context c,ArrayList<String> array_Name, ArrayList<String> array_Status, ArrayList<String> array_Color) {

        mContext = c;

        arr_Name = array_Name;
        arr_Status = array_Status;
        arr_Color = array_Color;

    }

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

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return 0;
    }


    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub      

        String status;

        TextView mTextView;
        if (convertView == null) {
            mTextView = new TextView(mContext);
        }

        else {
            mTextView = (TextView)convertView;
        }
        mTextView.setText(arr_Name.get(position) +" "+  arr_Status.get(position) );

        position = 0;

        while (position < arr_Status.size()) {
            status = arr_Status.get(position);
            if (status.equals("Finnished")) {
                mTextView.setBackgroundResource(color.holo_green_dark);
            }
            if (status.equals("Running")) {
                mTextView.setBackgroundResource(color.holo_orange_dark);
            }
            if (status.equals("Stopped")) {
                mTextView.setBackgroundResource(color.holo_red_dark);
            }
            position = position + 1;
//          status = null;
        }

        return mTextView;
    }

}

输出是:获取的数据显示在列表视图中。每行都有进程名称及其状态(运行,完成和停止)。 现在我希望对于完成过程,行的颜色为绿色,对于Stopped为红色,橙色为运行一个。这里第1行和第3行的颜色不是必需的。 注意:每一行都是红色的。

请帮忙。

1 个答案:

答案 0 :(得分:0)

这不起作用的原因是因为你在一个方法中循环遍历所有项目。

对于ListView的每一行执行getView()方法一次,这意味着您应该只查看一个状态。

请注意,当您设置状态文字时,您需要查看给定位置的状态。你也需要为颜色做这件事。尝试将行更改为以下内容:

String status = arr_Status.get(position);

mTextView.setText(arr_Name.get(position) + " " + status;

if(status.equals("Finished"){
   mTextView.setBackgroundResource(color.holo_green_dark);
} else if(status.equals("Running"){
   mTextView.setBackgroundResource(color.holo_orange_dark);
} else{ // Stopped
   mTextView.setBackgroundResource(color.holo_red_dark);
}

position参数表示您正在显示的行,因此无需像这样循环遍历每一行。

出于这个原因,我认为最后一个位置的状态为已停止,这就是为什么每一行都是红色的原因,因为在每行中你都要通过列表,状态颜色为列表中的最后一项设置。