android 点击列表,动态显示对应的内容

一个健康小贴士,通过读取文件生成的列表,然后每列对应同的内容,内容也是通过读取文件生成的。他们有一个共同的标题,怎样写,点击一列找到对应的内容?... 一个健康小贴士,通过读取文件生成的列表,然后每列对应同的内容,内容也是通过读取文件生成的。他们有一个共同的标题,怎样写,点击一列找到对应的内容? 展开
 我来答
小傻

推荐于2016-11-27 · 知道合伙人软件行家
小傻
知道合伙人软件行家
采纳数:11567 获赞数:31134
已经做过两个上架的app和两个网页项目.

向TA提问 私信TA
展开全部

android点击列表,动态显示对应的内容,可以点击之后,跳转到详情页面进行显示,主要是用intent进行跳转,也可以携带数据bundle,key-value键值对来保存。代码如下:

public class HandlerDemo extends Activity implements OnScrollListener {

    private ListView mListView;
    LinearLayout loadingLayout;
    private Thread mThread;
    private ListViewAdapter adapter;

    private int startIndex = 1;// 从第1条开始
    private int size = 10;// 每次下载十条数据
    private List<News> newsList;
    List<Map<String, String>> data ;

    /*
     * 设置布局显示属性
     */
    private LayoutParams mLayoutParams = new LayoutParams(
            LinearLayout.LayoutParams.WRAP_CONTENT,
            LinearLayout.LayoutParams.WRAP_CONTENT);

    private LayoutParams ffLayoutParams = new LayoutParams(
            LinearLayout.LayoutParams.FILL_PARENT,
            LinearLayout.LayoutParams.FILL_PARENT);

    private ProgressBar progressBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.news_main);
        data=new ArrayList<Map<String, String>>();
        addView();
    }

    private void addView() {
        if (startIndex == 1) {
            newsList = new ArrayList<News>();
            newsList = getNewsList();
        }
        getdata(newsList);
        LinearLayout layout = new LinearLayout(this);
        layout.setOrientation(LinearLayout.HORIZONTAL);
        progressBar = new ProgressBar(this);
        layout.addView(progressBar, mLayoutParams);
        TextView textView = new TextView(this);
        textView.setText("加载中...");
        textView.setGravity(Gravity.CENTER_VERTICAL);
        layout.addView(textView, ffLayoutParams);
        layout.setGravity(Gravity.CENTER);
        loadingLayout = new LinearLayout(this);
        loadingLayout.addView(layout, mLayoutParams);
        loadingLayout.setGravity(Gravity.CENTER);

        // 得到一个ListView用来显示条目
        mListView = (ListView) findViewById(R.id.listView);
        mListView.addFooterView(loadingLayout);
        adapter = new ListViewAdapter();
        mListView.setAdapter(adapter);
        mListView.setOnScrollListener(this);
        mListView.setTextFilterEnabled(true);
    }

    @Override
    public void onScroll(AbsListView view, int firstVisibleItem,
            int visibleItemCount, int totalItemCount) {
        // TODO Auto-generated method stub
        if (firstVisibleItem + visibleItemCount == totalItemCount) {
            if (mThread == null || !mThread.isAlive()) {
                mThread = new Thread() {

                    @Override
                    public void run() {
                        newsList = new ArrayList<News>();
                        newsList = getNewsList();
                        getdata(newsList);
                        Message msg = new Message();
                        msg.what = 1;
                        handler.sendMessage(msg);
                    }
                };
                mThread.run();
            }
        }
    }
    
    Handler handler = new Handler() {

        @Override
        public void handleMessage(Message msg) {
            // TODO Auto-generated method stub
            if (msg.what == 1) {
                startIndex = startIndex + size;
                Log.v("startindex", startIndex + "");
                mListView.removeFooterView(loadingLayout);
                mThread.stop();
                adapter.count += size;
                adapter.notifyDataSetChanged();
                return;
            }
        }
    };

    class ListViewAdapter extends BaseAdapter {
        int count = 10;

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

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

        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;
        }
        
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            convertView = LayoutInflater.from(getApplicationContext()).inflate(
                    R.layout.news_item, null);
            TextView textView = (TextView) convertView
                    .findViewById(R.id.textNewsTitle);
            textView.setText((data.get(position)).get("title"));
            return convertView;
        }
    }

    @Override
    public void onScrollStateChanged(AbsListView view, int scrollState) {
        // TODO Auto-generated method stub

    }

    private List<Map<String, String>> getdata(List<News> list) {

        if (list == null)
            return null;
        for (News news : list) {
            Map<String, String> map = new HashMap<String, String>();
            map.put("title", news.getTitle());
            data.add(map);
        }
        return data;
    }

    /*
     * 获取网络数据 注:我是访问本机的一个新闻服务,使用asp.net技术来实现的
     * 这个是项目是一个基于android的资讯播报软件
     */
    private List<News> getNewsList() {
        String path = "http://10.0.2.2/getNewsList.aspx";
        String xmlStr = "<?xml version='1.0' encoding='utf-8'?><source><categoryIds>1,3,7</categoryIds><startIndex>"
                + startIndex
                + "</startIndex><detail>2</detail><count>"
                + size
                + "</count></source>";
        NewsConnector newsConnector = new NewsConnector();
        List<News> list = new ArrayList<News>();
        list = newsConnector.getNewsList(path, xmlStr);
        return list;
    }
}
wicked_Harmous
2012-09-28 · TA获得超过690个赞
知道小有建树答主
回答量:229
采纳率:0%
帮助的人:220万
展开全部
你现在你的内容和标提自己本身应该是有关联的吧?
不然你也没法根据标题找内容啊。我建议你直接把你的内容和标题存放在一个实体类中,用实体类的标题显示,你点击这个标题直接读取实体类里面的内容,这样不用你再去根据标题找一次内容。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cuiguohui2011
2012-09-27
知道答主
回答量:81
采纳率:0%
帮助的人:17.5万
展开全部
dreamwever cs6 有移动手机网站模板你可以参考i下!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
双四别阴我
2012-09-27 · TA获得超过2282个赞
知道大有可为答主
回答量:1250
采纳率:57%
帮助的人:1194万
展开全部
多研究下listView吧.推荐使用adapter继承BaseAdapter.
用好listView,这个就简单了.
更多追问追答
追问
内容我已经读取完了,就差连接了,现在连接的方式是判断标题,然后进到对应的文本文件。
if(title.equals("走跑的三个阶段")) {
Conter("tip1.txt", mycenter_tip_tiptitle, mycenter_tip_tipcontent);}
有没有更好的方法进去呢?
追答
"每列对应同的内容"?是相同的内容还是不同的内容?
意思是这个列表的数据是从一个文件读取来的.
这个列表显示的是标题列表.
点击列表找到对应的内容是吧?
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式