① android ListView 中如何实现在滑动列表时第一项不动
这个不行,但是有解决方法,在listview外面套一层linearlayout。同时,在listview上面加入一个和你listview一致的UI元素。完成后的效果,就和楼主的要求一致。
② Android中listView
你点击了我1是用Toast显示吗?那就Toast.makeToast方法会返回一个对象,你在ListView滑动时,再调用cancel就好了。
③ android listview下拉刷新在不同的手机上变成这个样子。。
首先你要确定你的listView设置成 match_parent,如果已经是的话,你把下拉刷新的头部的背景颜色设置成透明就不会这么丑了
④ android 中listview 的用法
1.在xml里面定义一个ListView,这个xml是一个activity的layout文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:id="@+id/LinearLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<ListView android:layout_width="wrap_content" //定义一个listView
android:layout_height="wrap_content"
android:id="@+id/ListView01"
/>
</LinearLayout>
2.定义ListView每个条目的Layout,比如命名为listview_item.xml,用RelativeLayout实现:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:id="@+id/RelativeLayout01"
android:layout_width="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:paddingBottom="4dip"
android:paddingLeft="12dip"
android:paddingRight="12dip">
<ImageView
android:paddingTop="12dip"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/ItemImage"
/>
<TextView
android:text="TextView01"
android:layout_height="wrap_content"
android:textSize="20dip"
android:layout_width="fill_parent"
android:id="@+id/ItemTitle"
/>
<TextView
android:text="TextView02"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_below="@+id/ItemTitle"
android:id="@+id/ItemText"
/>
</RelativeLayout>
3.在Activity里面调用和加入Listener,具体见注释:
package com.ray.test;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnCreateContextMenuListener;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.AdapterView.OnItemClickListener;
public class TestListView extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//绑定Layout里面的ListView
ListView list = (ListView) findViewById(R.id.ListView01);
//生成动态数组,加入数据
ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>();
for(int i=0;i<10;i++)
{
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("ItemImage", R.drawable.checked);//图像资源的ID
map.put("ItemTitle", "Level "+i);
map.put("ItemText", "Finished in 1 Min 54 Secs, 70 Moves! ");
listItem.add(map);
}
//生成适配器的Item和动态数组对应的元素,这里用SimpleAdapter作为ListView的数据源
//如果条目布局比较复杂,可以继承BaseAdapter来定义自己的数据源。
SimpleAdapter listItemAdapter = new SimpleAdapter(this,listItem,//数据源
R.layout.list_items,//ListItem的XML实现
//动态数组与ImageItem对应的子项
new String[] {"ItemImage","ItemTitle", "ItemText"},
//ImageItem的XML文件里面的一个ImageView,两个TextView ID
new int[] {R.id.ItemImage,R.id.ItemTitle,R.id.ItemText}
);
//添加并且显示
list.setAdapter(listItemAdapter);
//添加点击
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
setTitle("点击第"+arg2+"个项目");
}
});
//添加长按点击
list.(new OnCreateContextMenuListener() {
@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
menu.setHeaderTitle("长按菜单-ContextMenu");
menu.add(0, 0, 0, "弹出长按菜单0");
menu.add(0, 1, 0, "弹出长按菜单1");
}
});
}
//长按菜单响应函数
@Override
public boolean onContextItemSelected(MenuItem item) {
setTitle("点击了长按菜单里面的第"+item.getItemId()+"个项目");
return super.onContextItemSelected(item);
}
}
⑤ Android 的ListView控件中,如何使选中项停留的列表的中间位置
对ListView设置onScrollListener来监听onScroll事件,获取当前的firstVisibleItem,visibleItemCount。对ListView设置OnItemClickListener来监听itemclick事件获取选中的item的索引,调用listView的setSelection(int index)方法重新定位一次listView的选中位置,其中index需要根据itemClick事件获取的索引和scroll事件获取的值来计算。这个没验证过不知道准不准,应该还有更好的方法,求大牛。
⑥ android listView 如何固定item的个数,剩下的滑动显示
不能不定个数,只能固定高度,如果需要固定为4个item,那么你可以算出来每个item的高度X4 ,再将listView的高度=item的高度X4。
1、配置文件里ListView高度设置为 warp_content
2、在代码中加载ListView数据,
3、数据加载完成后(setAdapter或者notifyDataSetChanged之后),重新计算item高度,然后item X 4 = listView的高度
listView.setAdapter(adapter);
View listItem = adapter.getView(0,null,listView);
listItem.measure(0, 0);
int totalHei = (listItem.getMeasuredHeight()+listView.getDividerHeight() ) * 4;
listView.getLayoutparams().height = totalHei;
仅供参考,没测试。你可以试试。。。
⑦ listview 列表刷新后不回到顶部,而是停留在当前位置,android怎么实现
设置里面打开发现,置顶就可以了。
⑧ android listview优化几种写法详细介绍
listview A view that shows items in a vertically scrolling list 。一个显示一个垂直的滚动子项的列表视图 在android开发中,使用listview的地方很多,用它来展现数据,成一个垂直的视图。使用listview是一个标准的适配器模式,用数据--,界面--xml以及适配器--adapter,数据被适配器按照需要的方式展现出来,xml描写了数据如何展现,activity中控制这些活动。 其中使用自定义的adapter,会要重写getView方法,在getView方法产生给用户item的视图以及数据。 见图: 这里有一个优化的地方,就是重用view,这样减少内存消耗,同时加快item加载速度。 在getView中优化的地方,大家想必都非常情况,下面我总结了三种优化的写法,请大家指正。 第一: 重用了convertView,很大程度上的减少了内存的消耗。通过判断convertView是否为null,是的话就需要产生一个视图出来,然后给这个视图数据,最后将这个视图返回给底层,呈献给用户。 特点:如果当前的convertView为null,则通过LayoutInflat产生一个view。View Code 第二: 上面的写法会有一个缺点,就是每次在getVIew的时候,都需要重新的findViewById,重新找到控件,然后进行控件的赋值以及事件相应设置。这样其实在做重复的事情,因为的geiview中,其实包含有这些控件,而且这些控件的id还都是一样的,也就是其实只要在view中findViewById一次,后面无需要每次都要findViewById了。 下面给出第二种写法 写发的特点,通常有一个内部类class ViewHolder,这个ViewHolder,用来标识view中一些控件,方便进行一些事件相应操作的设置,比如onClick等等,这样可以不用每次都要findViewById了,减少了性能的消耗。同时重用了convertView,很大程度上的减少了内存的消耗。View Code 第三:
个人觉得这个写法是最舒服的,最舒服的意思是看着代码有一种很爽,看的很清晰。 特点,使用了内部类class ViewHolder、重用了convertView。 区别第二种写法是,使用了一个临时变量View view = convertView,然后修改view,最后返回viewView Code 以上就是集中写法,供新手学习和总结。源代码如下:LisViewTest.zip 根据楼下朋友提供的建议,发现还有优化的地方,最新更新如下: View Code @Override public View getView(int position, View convertView, ViewGroup parent) { View view = convertView; ViewHolder holder ; if (view == null) { view = LayoutInflater.from(context).inflate(R.layout.section_list_item1, null); holder = new ViewHolder(); holder.tv_name = (TextView)view.findViewById(R.id.contact_contactinfoitem_tv_name); holder.tv_phone = (TextView)view.findViewById(R.id.contact_contactinfoitem_tv_phoneNum); view.setTag(holder); } else { holder = (ViewHolder)view.getTag(); } ContactInfo1 confo = contacts.get(position); Log.i("my", "confo "+confo.getContactName()); if (confo != null) {//to set every item's text holder.tv_name.setText(confo.getContactName()); holder.tv_phone.setText(confo.getContact_Phone()); } return view; } <font color="\"#0000ff\""> </font>staticclass ViewHolder { TextView tv_name,tv_phone; } 注意:static class ViewHolder 这里设置ViewHolder 为static,也就是静态的,静态类只会在第一次加载时 会耗费比较长时间,但是后面就可以很好帮助加载,同时保证了内存中只有一个ViewHolder,节省了内存的开销。 非常感谢大家提出建议以及大家的关注!
⑨ 安卓中listview怎么使用
自定义一个adapter,你可以对里面进行布局,这个布局是你listview里面item的样式,在你放listview的activity里面实现OnItemClickListener接口,让listview去set这个监听,这样你点击每个item的时候会监听到,在监听接口里面intent去另外一个activity,把id通过intent带过去