Android ListView在ListView项中,适配器始终位于位置0
各位好,我在ListView项目中有一个ListView:Android ListView在ListView项中,适配器始终位于位置0,android,listview,adapter,Android,Listview,Adapter,各位好,我在ListView项目中有一个ListView: <Button android:id="@+id/button_comments_open" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="Comments" /
<Button
android:id="@+id/button_comments_open"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="Comments"
/>
<ListView
android:id="@+id/post_comment_listview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
</ListView>
内部:
<?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="vertical" >
<ListView
android:id="@+id/post_fragment_listview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp" >
</ListView>
</LinearLayout>
但内部ListView(项目)的适配器始终位于位置0:
public class PostsCommentsAdapter extends BaseAdapter {
int ITEM_TEXT_TYPE = 0;
int ITEM_IMAGE_TYPE = 1;
LayoutInflater mLayoutInflater;
Context mContext;
public PostsCommentsAdapter(Context context, int layout, Cursor c, String[] from,
int[] to,SparseArray<String> list ,int flags) {
super();
this.mContext = context;
this.list = list;
mLayoutInflater = (LayoutInflater)
mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
System.out.println("List Size : "+list.size());
return list.size();
}
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public int getItemViewType(int position) {
System.out.println("Getting for Position : "+position+" is The :
"+list.get(position));
// mCursor.moveToPosition(commentsidslist.get(position));
System.out.println("To Get Type"+list.get(position));
String type = (list.get(position).split("\\&&DETAIL&&"))[1];
int chooser = -1;
// 1 = like 2 = dislike 3 = comment 4 = imageurl
switch (type) {
case "C":
chooser = 0;
break;
case "P":
chooser = 1;
break;
default:
break;
}
System.out.println("TYPE "+type);
return chooser;
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return list.get(position).hashCode();
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
int Demand = getItemViewType(position);
System.out.println("Demand :"+Demand);
if (convertView == null || convertView.getTag() == null) {
holder = new ViewHolder();
System.out.println("ConvertView null");
switch (Demand) {
case 0:
//text
convertView = mLayoutInflater.inflate(R.layout.post_list_row_text, null);
holder.tv = (TextView)convertView.findViewById(R.id.post_detail_row_text);
holder.like = (Button)convertView.findViewById(R.id.button_comment_like);
holder.dislike =
(Button)convertView.findViewById(R.id.button_comment_dislike);
break;
case 1:
//picture
convertView = mLayoutInflater.inflate(R.layout.post_list_row_picture,
null);
holder.iv =
(ImageView)convertView.findViewById(R.id.comment_row_imageview);
holder.like = (Button)convertView.findViewById(R.id.button_comment_like);
holder.dislike =
(Button)convertView.findViewById(R.id.button_comment_dislike);
break;
default:
break;
}
convertView.setTag(holder);
}else {
holder = (ViewHolder) convertView.getTag();
}
switch (Demand) {
case 0:
holder.tv.setText((list.get(position).split("\\&&DETAIL&&"))[3]);
holder.like.setText("0 For Now");
//if
holder.like.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
break;
case 1:
Picasso.with(mContext).load(((list.get(position).split("\\&&DETAIL&&"))
[3])).resize(150, 150).into(holder.iv);
holder.like.setText("0 For Now");
//if
holder.like.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
break;
default:
break;
}
System.out.println("Post Row Detail Item : "+((list.get(position))));
return convertView;
}
公共类PostsCommentsAdapter扩展BaseAdapter{
int ITEM_TEXT_TYPE=0;
int ITEM_IMAGE_TYPE=1;
放平机MLAYOUTIONFLATER;
语境;
公共PostsCommentsAdapter(上下文上下文、int布局、光标c、字符串[]from、,
int[]至,SparseArray列表,int标志){
超级();
this.mContext=上下文;
this.list=列表;
MLAyoutFlater=(LayoutFlater)
mContext.getSystemService(Context.LAYOUT\u充气机\u服务);
}
@凌驾
public int getCount(){
System.out.println(“列表大小:+List.Size());
返回list.size();
}
@凌驾
public int getViewTypeCount(){
返回2;
}
@凌驾
public int getItemViewType(int位置){
System.out.println(“获取位置:“+Position+”是:
“+list.get(position));
//moveToPosition(commentsidslist.get(position));
System.out.println(“获取类型”+list.Get(位置));
字符串类型=(list.get(position.split(“\\&&DETAIL&&”)[1];
int-chooser=-1;
//1=喜欢2=不喜欢3=评论4=图像URL
开关(类型){
案例“C”:
选择器=0;
打破
案例“P”:
选择器=1;
打破
违约:
打破
}
系统输出打印项次(“类型”+类型);
返回选择器;
}
@凌驾
公共对象getItem(int位置){
返回列表。获取(位置);
}
@凌驾
公共长getItemId(int位置){
return list.get(position.hashCode();
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
ViewHolder=null;
int Demand=getItemViewType(位置);
系统输出打印项次(“需求:+需求);
if(convertView==null | | convertView.getTag()==null){
holder=新的ViewHolder();
System.out.println(“ConvertView null”);
开关(按需){
案例0:
//正文
convertView=mLayoutInflater.FLATE(R.layout.post\u list\u row\u text,空);
holder.tv=(TextView)convertView.findViewById(R.id.post\u detail\u row\u text);
holder.like=(Button)convertView.findViewById(R.id.Button\u comment\u like);
holder.Loke=
(按钮)convertView.findViewById(R.id.Button\u comment\u disk);
打破
案例1:
//图画
convertView=MLAYOUTINGER.充气(右布局图、后列表图、行图、,
无效);
第四章=
(ImageView)convertView.findViewById(R.id.comment\u row\u ImageView);
holder.like=(Button)convertView.findViewById(R.id.Button\u comment\u like);
holder.Loke=
(按钮)convertView.findViewById(R.id.Button\u comment\u disk);
打破
违约:
打破
}
convertView.setTag(支架);
}否则{
holder=(ViewHolder)convertView.getTag();
}
开关(按需){
案例0:
holder.tv.setText((list.get(position).split(“\\&&DETAIL&&”)[3]);
holder.like.setText(“目前为0”);
//如果
holder.like.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
}
});
打破
案例1:
毕加索.with(mContext).load(((list.get(position).split(“\\&&DETAIL&&&”))
[3] )。将(150150)调整为(支架iv);
holder.like.setText(“目前为0”);
//如果
holder.like.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
}
});
打破
违约:
打破
}
System.out.println(“Post行详细信息项:”+((list.get(position)));
返回视图;
}
我尝试了几乎所有的方法,但都不起作用,我的问题在哪里?!你们应该使用可扩展的listView。在这里获取教程:使用ExtendedListView来满足这种要求。适配器将始终从位置0开始,如果你们想设置listView来显示其他项目,只需调用listView.setSelection(位置);不是开始,它只显示1个项目你对dude来说是哪一个?项目列表视图还是外部列表视图
我在列表视图项目中有一个列表视图
,正如@Imtiyaz所说,你应该使用一个可扩展列表视图
。不仅使用起来更容易,而且速度也更快。对于当然。避免重新发明轮子!