listview-ListView列表文字无故变灰

问题描述

ListView列表文字无故变灰

我参考了官方的代码listview Adapter用法,但是移植过来listview文字就变成灰了,并且能选中 下面贴出代码。已经DEBUG 子线程返回data没问题。
这是运行图片。

 package com.wastrel.activity;

import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;

import com.wastrel.provider.Tabletbl;
import com.wastrel.provider.TabletblDAO;
import com.wastrel.util.HttpUtil;

import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class ChaZhuoActivity extends ListActivity {

    private Handler myhander = null;
    // private ListView tablelist = null;
    // private TextView tableid = null;

    private List<Tabletbl> data = new ArrayList<Tabletbl>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO 自动生成的方法存根
        super.onCreate(savedInstanceState);
        // setContentView(R.layout.activity_chazhuo);
        // tablelist = (ListView) findViewById(R.id.tablelist);
        // tableid = (TextView) findViewById(R.id.tablenum);
        myhander = new Handler() {

            @SuppressWarnings("unchecked")
            @Override
            public void handleMessage(Message msg) {
                // TODO 自动生成的方法存根
                switch (msg.what) {
                case 1:
                    data = (List<Tabletbl>) msg.obj;
                    TableListAdapter tblAdapter = new TableListAdapter(data,
                            getApplicationContext());
                    setListAdapter(tblAdapter);
                    break;

                default:
                    break;
                }
            }

        };
        new Thread(updatetable).start();
    }

    Runnable updatetable = new Runnable() {

        @Override
        public void run() {
            // TODO 自动生成的方法存根
            String urlStr = HttpUtil.Base_URL + "servlet/UpdateTableServlet";
            try {
                // 实例化URL对象
                URL url = new URL(urlStr);
                // 打开连接
                URLConnection conn = url.openConnection();
                // 获得输入流
                InputStream in = conn.getInputStream();
                // 实例化DocumentBuilderFactory
                DocumentBuilderFactory factory = DocumentBuilderFactory
                        .newInstance();
                // 实例化DocumentBuilder
                DocumentBuilder builder = factory.newDocumentBuilder();
                // 获得Document
                Document doc = builder.parse(in);
                // 获得节点列表
                NodeList nl = doc.getElementsByTagName("table");
                TabletblDAO tabletblDAO = new TabletblDAO(
                        getApplicationContext());
                if (nl.getLength() > 0) {
                    tabletblDAO.DeleteData();
                }
                // 循环将数据保存到菜谱表
                List<Tabletbl> list = new ArrayList<Tabletbl>();
                for (int i = 0; i < nl.getLength(); i++) {
                    // 实例化ContentValues
                    // 解析XML文件获得桌号id
                    int id = Integer.parseInt(doc.getElementsByTagName("id")
                            .item(i).getFirstChild().getNodeValue());
                    int num = Integer.parseInt(doc.getElementsByTagName("num")
                            .item(i).getFirstChild().getNodeValue());
                    // 名称
                    String name = doc.getElementsByTagName("name").item(i)
                            .getFirstChild().getNodeValue();
                    int flag = Integer.parseInt(doc
                            .getElementsByTagName("flag").item(i)
                            .getFirstChild().getNodeValue());
                    String description = doc
                            .getElementsByTagName("description").item(i)
                            .getFirstChild().getNodeValue();
                    /*
                     * values.put("id", id); values.put("num", num);
                     * values.put("name", name); values.put("flag", flag);
                     * values.put("description", description);
                     */
                    list.add(new Tabletbl(id, num, name, flag, description));
                    // 添加到ContenValues对象
                    // 插入到数据库
                    // tabletblDAO.AddTabletblDAO(values);
                }
                Message msg = myhander.obtainMessage();
                msg.what = 1;
                msg.obj = list;
                myhander.sendMessage(msg);
            } catch (Exception e) {
                e.printStackTrace();
            }

        }

    };

    private static class TableListAdapter extends BaseAdapter {

        public List<Tabletbl> mlist = null;
        private Context context;

        public TableListAdapter(List<Tabletbl> list, Context c) {
            mlist = list;
            context = c;
        }

        @Override
        public int getCount() {
            // TODO 自动生成的方法存根
            return mlist.size();
        }

        @Override
        public Object getItem(int position) {
            // TODO 自动生成的方法存根
            return position;
        }

        @Override
        public long getItemId(int position) {
            // TODO 自动生成的方法存根
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO 自动生成的方法存根
            ViewHolder holder;

            // When convertView is not null, we can reuse it directly, there is
            // no
            // need
            // to reinflate it. We only inflate a new View when the convertView
            // supplied
            // by ListView is null.
            if (convertView == null) {
                LayoutInflater mInflater = LayoutInflater.from(context);

                convertView = mInflater.inflate(R.layout.chazhuo_list, null);

                // Creates a ViewHolder and store references to the two children
                // views
                // we want to bind data to.
                holder = new ViewHolder();
                holder.idtext = (TextView) convertView
                        .findViewById(R.id.chazhuo_id);
                holder.nametext = (TextView) convertView
                        .findViewById(R.id.chazhuo_name);
                holder.flagtext = (TextView) convertView
                        .findViewById(R.id.chazhuo_flag);
                holder.remarktext = (TextView) convertView
                        .findViewById(R.id.chazhuo_remark);
                convertView.setTag(holder);
            } else {
                // Get the ViewHolder back to get fast access to the TextView
                // and the ImageView.
                holder = (ViewHolder) convertView.getTag();
            }

            // Bind the data efficiently with the holder.
            holder.idtext.setText(String.valueOf(mlist.get(position).getId()));
            holder.nametext.setText(mlist.get(position).getName());
            if (mlist.get(position).getFlag() == 0)
                holder.flagtext.setText(context
                        .getString(R.string.chazhuo_kongxian));
            else if (mlist.get(position).getFlag() == 1) {
                holder.flagtext.setText(context
                        .getString(R.string.chazhuo_youren));
            } else {
                holder.flagtext.setText(context
                        .getString(R.string.chazhuo_unkown));
            }
            holder.remarktext.setText(mlist.get(position).getDescription());
            return convertView;
        }

        static class ViewHolder {
            TextView idtext;
            TextView nametext;
            TextView flagtext;
            TextView remarktext;
        }
    }

}

这段XML 我在官方的demo上试了 没问题。

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:padding="5dp" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
 />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="0dp"
                android:layout_weight="2"
        android:layout_height="wrap_content"
 />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
 />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="0dp"
        android:layout_weight="2"
        android:layout_height="wrap_content"
 />

</LinearLayout>

这个问题我搞了一两天了 找不到哪里的问题。求大神解决。

解决方案

onCreate 时,case 1时:
TableListAdapter tblAdapter = new TableListAdapter(data, getApplicationContext());
里面的 getApplicationContext()
改成 ChaZhuoActivity.this
试试

解决方案二:

看你AndroidManifest.xml文件中是不是你按照创建工程向导默认设置了全局样式。导致字体是灰色。

解决方案三:

R.layout.chazhuo_list这个自定义布局里面看看是不是设置字体颜色了

解决方案四:

应该是你工程设置了style的Theme,你看看呢

解决方案五:

自己用baseadapter吧 可控性高

时间: 2024-08-20 02:50:58

listview-ListView列表文字无故变灰的相关文章

CssGaga教程:自动同步文件和哀悼日网站一键变灰

文章简介:CssGaga – 自动同步文件,哀悼日网站一键变灰. CssGaga – 自动同步文件 支持同步的文件类型css/jpg/png/gif/cur/ico 自动登录同步服务器 自动登录脚本放置在autorun目录中注:CssGaga启动时即自动登录服务器 同步文件并生成提单文件列表 须配置本地路径与目的路径的对应关系 <add key="pathSource" value="E:\isd_webrebuild_rep\qzonev5_proj\trunk\qz

c#winform界面listview图片列表如何实现多选按钮的批量删除

问题描述 c#winform界面listview图片列表如何实现多选按钮的批量删除 本人C#新做了一个listview自动加载图片的界面,每个加载的图片都是可以多选的,现在我想通过多选按钮实现批量删除加载的图片以及图片对应的文件里的图片,请高手指教,谢谢! 解决方案 listview的可以显示复选框listView1.CheckBoxes = true;然后遍历 foreach (ListViewItem item in listView1.Items) { if (item.Checked)

关于下listview的列表项的显示

问题描述 关于下listview的列表项的显示 急问:最近遇到一个新问题,就是怎么做也可以让一个ListView的每个item也是一个ListView(或是可以滚动的形式)

做一个手机网页,查看消息列表,列表用的是table,要求用户点击消息字体变灰

问题描述 做一个手机网页,查看消息列表,列表用的是table,要求用户点击消息字体变灰 做一个手机网页,查看消息列表,列表用的是table,要求用户点击消息字体变灰 解决方案 给tr添加click事件,然后设置颜色,如果你要持久化还需要和数据库打交道,保存状态到数据库中 <table><tr onclick=""this.style.color='#666'""><td>信息1</td></tr><t

android-recyclerview嵌套listview 在listview的列表全部移出屏幕之前是否能够重用

问题描述 recyclerview嵌套listview 在listview的列表全部移出屏幕之前是否能够重用 recyclerview的复用机制,如果嵌套了listview或者其他的列表 是不是在该列表移出屏幕之前是不会重用的? 解决方案 http://www.imooc.com/learn/424 可以看看这个

安卓(Android)ListView 显示图片文字_Android

一.代码实现 1.  "Activity_11\src\yan\activity_11\MainActivity.java" package yan.activity_11; import android.os.Bundle; import android.app.Activity; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import a

powerpoint中如何将列表文字变图形

  在powerpoint制作中,列表文字与图形的效果不一样,有时候我们想把文字做出图形的效果,这个时候,我们就需要把文字变换成图形.我们可以直接把powerpoint中带有格式的列表转换为图形格式. 方法/步骤 首先打开或者新建一个ppt演示文稿,如果是新建的文稿需要输入一些列表文字,如图 然后我们点击开始选项卡中,段落功能区域中的转换为smartart然后选择其他smartart图形 打开选择其他smartart图形对话框,选择一种你需要的图形,然后点击确定即可 这时你就会发现,你刚才的文字

安卓(Android)ListView 显示图片文字

一.代码实现 1.  "Activity_11\src\yan\activity_11\MainActivity.java" package yan.activity_11; import android.os.Bundle; import android.app.Activity; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import a

getview-在listview中,在点击某行按钮后,按钮变灰。其它的行的按钮也变灰了。

问题描述 在listview中,在点击某行按钮后,按钮变灰.其它的行的按钮也变灰了. 在listview中,每行显示一个图片.一个按钮及说明文字,在点击某行按钮后,按钮变灰.但是发现点击某行的按钮后,在滑动界面时,发现其它的行的按钮也变灰了.请问这是什么问题? 下面是listview中getView方法代码: @Override public View getView(final int position, View convertView, ViewGroup parent) { ViewHo