android 点击列表,动态显示对应的内容
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 点击列表,动态显示对应的内容相关的知识,希望对你有一定的参考价值。
一个健康小贴士,通过读取文件生成的列表,然后每列对应同的内容,内容也是通过读取文件生成的。他们有一个共同的标题,怎样写,点击一列找到对应的内容?
android点击列表,动态显示对应的内容,可以点击之后,跳转到详情页面进行显示,主要是用intent进行跳转,也可以携带数据bundle,key-value键值对来保存。代码如下:
public class HandlerDemo extends Activity implements OnScrollListenerprivate 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;
参考技术A 你现在你的内容和标提自己本身应该是有关联的吧?
不然你也没法根据标题找内容啊。我建议你直接把你的内容和标题存放在一个实体类中,用实体类的标题显示,你点击这个标题直接读取实体类里面的内容,这样不用你再去根据标题找一次内容。 参考技术B dreamwever cs6 有移动手机网站模板你可以参考i下! 参考技术C 多研究下listView吧.推荐使用adapter继承BaseAdapter.
用好listView,这个就简单了.追问
内容我已经读取完了,就差连接了,现在连接的方式是判断标题,然后进到对应的文本文件。
if(title.equals("走跑的三个阶段"))
Conter("tip1.txt", mycenter_tip_tiptitle, mycenter_tip_tipcontent);
有没有更好的方法进去呢?
"每列对应同的内容"?是相同的内容还是不同的内容?
意思是这个列表的数据是从一个文件读取来的.
这个列表显示的是标题列表.
点击列表找到对应的内容是吧?
没列对应的内容是不同的,有一个列表对应一个txt文件(我是这样分的),列表显示的是标题内容。列表的显示是从一个文件读取的。
追答问题描述不清楚,真不好帮你解决.希望你好好描述一下.
"列表显示的是标题内容"
你除了标题就是内容,这里指的是?你每一列要显示的是什么?小贴士弹出来提示的是内容?你txt里面存的是什么?一列对应一个txt文件?还是整个listView对应一个txt文件.txt文件里包含什么?
最怕描述不清的问题了.就算再了解listView, 也没法帮你
以上是关于android 点击列表,动态显示对应的内容的主要内容,如果未能解决你的问题,请参考以下文章
android ExpandableTextView-自定义可以动态展开/收缩显示长文本的TextView
android ExpandableTextView-自定义可以动态展开/收缩显示长文本的TextView