在这篇文章中,我们将为您详细介绍android–线性布局中的两个ListView的内容,并且讨论关于android线性布局两种形式的相关问题。此外,我们还会涉及一些关于AndroidListView扩
在这篇文章中,我们将为您详细介绍android – 线性布局中的两个ListView的内容,并且讨论关于android线性布局两种形式的相关问题。此外,我们还会涉及一些关于Android ListView 扩展 DragSortListView、Android ListView多布局、android – listfragment中的多个listview、android – R.layout.listview与R.id.listview相同的知识,以帮助您更全面地了解这个主题。
本文目录一览:- android – 线性布局中的两个ListView(android线性布局两种形式)
- Android ListView 扩展 DragSortListView
- Android ListView多布局
- android – listfragment中的多个listview
- android – R.layout.listview与R.id.listview相同
android – 线性布局中的两个ListView(android线性布局两种形式)
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/backrepeat" android:orientation="vertical" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/shape_calendar_top" android:orientation="horizontal" > <ImageView android:id="@+id/prevMonth" android:layout_width="50dp" android:layout_height="55dp" android:src="@drawable/button_events_prevIoUs" > </ImageView> <TextView android:id="@+id/currentMonth" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="0.6" android:gravity="center_vertical|center_horizontal" android:text="Janauary" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#d458b1" android:text> </TextView> <ImageView android:id="@+id/nextMonth" android:layout_width="50dp" android:layout_height="55dp" android:src="@drawable/button_events_next" /> </LinearLayout> <TextView android:id="@+id/direction_label" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_marginTop="10dp" android:background="#DA81F5" android:paddingLeft="5dp" android:paddingTop="5dp" android:text="PRESS RELEASES" android:textColor="#FFFFFF" android:textSize="13dip" /> <ListView android:id="@+id/eventsList" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@+id/direction_label" android:background="#ffffff" > </ListView> <TextView android:id="@+id/direction_label1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:background="#DA81F5" android:paddingLeft="5dp" android:paddingTop="5dp" android:text="SPEECHES" android:textColor="#FFFFFF" android:textSize="13dip" /> <ListView android:id="@+id/eventsList1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@+id/direction_label1" android:background="#ffffff" > </ListView> <TextView android:id="@+id/empty_list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" android:text="" android:textAppearance="?android:attr/textAppearanceMedium" /> </LinearLayout>
如果我使用scrollview,那么它只包含第一行的listview.
请提出建议.
编辑:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/backrepeat" android:orientation="vertical" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/shape_calendar_top" android:orientation="horizontal" > <ImageView android:id="@+id/prevMonth" android:layout_width="50dp" android:layout_height="55dp" android:src="@drawable/button_events_prevIoUs" > </ImageView> <TextView android:id="@+id/currentMonth" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="0.6" android:gravity="center_vertical|center_horizontal" android:text="Janauary" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#d458b1" android:text> </TextView> <ImageView android:id="@+id/nextMonth" android:layout_width="50dp" android:layout_height="55dp" android:src="@drawable/button_events_next" /> </LinearLayout> <TextView android:id="@+id/direction_label" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_marginTop="10dp" android:background="#DA81F5" android:paddingLeft="5dp" android:paddingTop="5dp" android:text="PRESS RELEASES" android:textColor="#FFFFFF" android:textSize="13dip" /> <ListView android:id="@+id/eventsList" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" android:layout_below="@+id/direction_label" android:background="#ffffff" > </ListView> <TextView android:id="@+id/direction_label1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:background="#DA81F5" android:paddingLeft="5dp" android:paddingTop="5dp" android:text="SPEECHES" android:textColor="#FFFFFF" android:textSize="13dip" /> <ListView android:id="@+id/eventsList1" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" android:layout_below="@+id/direction_label1" android:background="#ffffff" > </ListView> <TextView android:id="@+id/empty_list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" android:text="" android:textAppearance="?android:attr/textAppearanceMedium" /> </LinearLayout>
如果我使用它,没有显示任何内容:(
ASMI
编辑:两个列表的代码:
{ arrayofWebData.add(cn); listadapter = new SelectArralAdapter(getActivity(),arrayofWebData); List_events.setAdapter(listadapter); }
对于第二个ListView,它如下:
if ((year == event_year) && (event_month == month)) { arrayofWebDataPress.add(cn); listadapter_press = new SelectArralAdapter_Press(getActivity(),arrayofWebDataPress); List_events_press.setAdapter(listadapter_press); i++; }
两个ListView的数组适配器:
class SelectArralAdapter_Press extends ArrayAdapter<PressDB> { private LayoutInflater inflater; public SelectArralAdapter_Press(Context context,ArrayList<PressDB> arrayofWebDataPress) { super(context,R.layout.speech_list_item,R.id.event_title,arrayofWebDataPress); inflater = LayoutInflater.from(context); } @Override public View getView(int position,View convertView,ViewGroup parent) { ViewHolder_Press holder; if (convertView == null) { convertView = inflater.inflate(R.layout.speech_list_item,null); holder = new ViewHolder_Press(convertView); convertView.setTag(holder); } else { holder = (ViewHolder_Press) convertView.getTag(); } holder.populateFrom(arrayofWebDataPress.get(position)); return (convertView); } } class ViewHolder_Press{ public TextView event_name = null; public TextView event_date = null; public ViewHolder_Press(View row) { event_name = (TextView) row.findViewById(R.id.event_title); event_date = (TextView) row.findViewById(R.id.event_date_time); } void populateFrom(PressDB eventsMainDB) { event_name.setText(eventsMainDB.press_name); event_date.setText(eventsMainDB.press_date + " "); } }
对于第二个Adaper:
class SelectArralAdapter extends ArrayAdapter<SpeechDB> { private LayoutInflater inflater; public SelectArralAdapter(Context context,ArrayList<SpeechDB> arrayofWebData) { super(context,arrayofWebData); inflater = LayoutInflater.from(context); } @Override public View getView(int position,ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = inflater.inflate(R.layout.speech_list_item,null); holder = new ViewHolder(convertView); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.populateFrom(arrayofWebData.get(position)); return (convertView); } } class ViewHolder { public TextView event_name = null; public TextView event_date = null; public ViewHolder(View row) { event_name = (TextView) row.findViewById(R.id.event_title); event_date = (TextView) row.findViewById(R.id.event_date_time); } void populateFrom(SpeechDB eventsMainDB) { event_name.setText(eventsMainDB.speech_name); event_date.setText(eventsMainDB.speech_date + " "); } }
解决方法
如果你想使用xml设计,那么你必须通过使用权重(这是最优选的)或通过在dp中给出修复大小来给出修复大小.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/backrepeat" android:weightSum="1" android:orientation="vertical" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/shape_calendar_top" android:orientation="horizontal" > <ImageView android:id="@+id/prevMonth" android:layout_width="50dp" android:layout_height="55dp" android:src="@drawable/button_events_prevIoUs" > </ImageView> <TextView android:id="@+id/currentMonth" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="0.6" android:gravity="center_vertical|center_horizontal" android:text="Janauary" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#d458b1" android:text> </TextView> <ImageView android:id="@+id/nextMonth" android:layout_width="50dp" android:layout_height="55dp" android:src="@drawable/button_events_next" /> </LinearLayout> <TextView android:id="@+id/direction_label" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_marginTop="10dp" android:background="#DA81F5" android:paddingLeft="5dp" android:paddingTop="5dp" android:text="PRESS RELEASES" android:textColor="#FFFFFF" android:textSize="13dip" /> <ListView android:id="@+id/eventsList" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="0.5" android:layout_below="@+id/direction_label" android:background="#ffffff" > </ListView> <TextView android:id="@+id/direction_label1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:background="#DA81F5" android:paddingLeft="5dp" android:paddingTop="5dp" android:text="SPEECHES" android:textColor="#FFFFFF" android:textSize="13dip" /> <ListView android:id="@+id/eventsList1" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="0.5" android:layout_below="@+id/direction_label1" android:background="#ffffff" > </ListView> <TextView android:id="@+id/empty_list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" android:text="" android:textAppearance="?android:attr/textAppearanceMedium" /> </LinearLayout>
我正在设计时获得这个屏幕.
Android ListView 扩展 DragSortListView
DragSortListView(DSLV)是 Android ListView 的一个扩展,支持拖拽排序和左右滑动删除功能。重写了 TouchInterceptor(TI)类来提供更加优美的拖拽动画效果。
DSLV 主要特性:
完美的拖拽支持;
在拖动时提供更平滑的滚动列表滚动;
支持每个 ListItem 高度的多样性
公开 startDrag () 和 stopDrag () 方法;
有公开的接口可以自定义拖动的 View。
DragSortListView 适用于带有任何优先级的列表:收藏夹、播放列表及清单等,算得上是目前 Android 开源实现拖动排序操作最完美的方案。
(简介来自:http://www.csdn.net/article/2013-05-06/2815145-Android-open-source-projects-two)
更多 http://www.oschina.net/code/snippet_219356_18991
Android ListView多布局
使用listview多布局会出现一点问题:
由于多个item布局给单一的item布局是不一样的,使用起来,contentview的复用会出现问题。
避免出现问题的有这几个方法:
1.重写 getViewTypeCount() – 该方法返回多少个不同的布局
2.重写 getItemViewType(int) – 根据position返回相应的Item. type的值必须从0开始
3.根据view item的类型,在getView中创建正确的convertView
public class MyAdapter extends BaseAdapter {
Context mContext;
LinearLayout linearLayout = null;
LayoutInflater inflater;
TextView tex;
final int VIEW_TYPE = 3;
final int TYPE_1 = 0;
final int TYPE_2 = 1;
final int TYPE_3 = 2;
public MyAdapter(Context context) {
mContext = context;
inflater = LayoutInflater.from(mContext);
}
@Override
public int getCount() {
return listString.size();
}
//每个convert view都会调用此方法,获得当前所需要的view样式
@Override
public int getItemViewType(int position) {
//根据具体的ITME类型返回
return type;
}
// 返回三个不同的布局
@Override
public int getViewTypeCount() {
return 3;
}
@Override
public Object getItem(int arg0) {
return listString.get(arg0);
}
@Override
public long getItemId(int position) {
return position;
}
// 创建正确的contentview复用
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
viewHolder1 holder1 = null;
viewHolder2 holder2 = null;
viewHolder3 holder3 = null;
int type = getItemViewType(position);
// 无convertView,需要new出各个控件
if (convertView == null) {
Log.e("convertView = ", " NULL");
// 按当前所需的样式,确定new的布局
switch (type) {
case TYPE_1:
convertView = inflater.inflate(R.layout.listitem1, parent, false);
holder1 = new viewHolder1();
holder1.textView = (TextView) convertView.findViewById(R.id.textview1);
holder1.checkBox = (CheckBox) convertView.findViewById(R.id.checkbox);
Log.e("convertView = ", "NULL TYPE_1");
convertView.setTag(holder1);
break;
case TYPE_2:
convertView = inflater.inflate(R.layout.listitem2, parent, false);
holder2 = new viewHolder2();
holder2.textView = (TextView) convertView.findViewById(R.id.textview2);
Log.e("convertView = ", "NULL TYPE_2");
convertView.setTag(holder2);
break;
case TYPE_3:
convertView = inflater.inflate(R.layout.listitem3, parent, false);
holder3 = new viewHolder3();
holder3.textView = (TextView) convertView.findViewById(R.id.textview3);
holder3.imageView = (ImageView) convertView.findViewById(R.id.imageview);
Log.e("convertView = ", "NULL TYPE_3");
convertView.setTag(holder3);
break;
}
} else {
// 有convertView,按样式,取得不用的布局
switch (type) {
case TYPE_1:
holder1 = (viewHolder1) convertView.getTag();
Log.e("convertView !!!!!!= ", "NULL TYPE_1");
break;
case TYPE_2:
holder2 = (viewHolder2) convertView.getTag();
Log.e("convertView !!!!!!= ", "NULL TYPE_2");
break;
case TYPE_3:
holder3 = (viewHolder3) convertView.getTag();
Log.e("convertView !!!!!!= ", "NULL TYPE_3");
break;
}
}
// 设置资源
switch (type) {
case TYPE_1:
holder1.textView.setText(Integer.toString(position));
holder1.checkBox.setChecked(true);
break;
case TYPE_2:
holder2.textView.setText(Integer.toString(position));
break;
case TYPE_3:
holder3.textView.setText(Integer.toString(position));
holder3.imageView.setBackgroundResource(R.mipmap.ic_launcher);
break;
}
return convertView;
}
}
// 各个布局的控件资源
class viewHolder1 {
CheckBox checkBox;
TextView textView;
}
class viewHolder2 {
TextView textView;
}
class viewHolder3 {
ImageView imageView;
TextView textView;
}
下面是四个xml布局:
activity_main
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"
android:layout_width="match_parent" android:layout_height="match_parent"
tools:context="com.example.listview_more.MainActivity">
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="match_parent"
></ListView>
</RelativeLayout>
listitem1
<?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"
>
<TextView
android:id="@+id/textview1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="hahaahha"
/>
<CheckBox
android:id="@+id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
listitem2
<?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">
<TextView
android:id="@+id/textview2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1111111"
/>
</LinearLayout>
listitme3
<?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"
>
<TextView
android:id="@+id/textview3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="888888888"
/>
<ImageView
android:id="@+id/imageview"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
android – listfragment中的多个listview
请与我裸露,因为我还在学习android和java.
我一直在尝试在列表片段中实现两个列表视图,我已经在我的xml中声明了两个列表视图,并尝试在java文件中设置两个单独的数据集,但是用于第一个lisview的列表视图数据被覆盖第二.
如何使用下面的代码将其指向正确的列表视图?
列表应该去的片段的java:
package com.owais.shopsellswap;
import java.util.ArrayList;
import java.util.HashMap;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.SimpleAdapter;
public class Fragment_My_Profile extends ListFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View myProfileView = inflater.inflate(R.layout.fragment_my_profile, container, false);
return myProfileView;
}
// Store Arralist as hashmaps for the listview
ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();
ArrayList<HashMap<String,String>> list2 = new ArrayList<HashMap<String,String>>();
// SimpleAdapter (listViewAdapter) links the array to the listview
private SimpleAdapter listViewAdapter;
private SimpleAdapter listViewAdapter2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//HashMap links each line of data to the correct TextView
HashMap<String,String> item;
for(int i=0;i<userInfo.length;i++){
item = new HashMap<String,String>();
item.put( "line1", userInfo[i][0]);
item.put( "line2", userInfo[i][1]);
list.add( item );
}
HashMap<String,String> item2;
for(int i=0;i<ListingsArray.length;i++){
item2 = new HashMap<String,String>();
item2.put( "line1", ListingsArray[i][0]);
item2.put( "line2", ListingsArray[i][1]);
item2.put( "line3", ListingsArray[i][2]);
list2.add( item2 );
}
listViewAdapter = new SimpleAdapter(getActivity(), list,
R.layout.listview_layout_1,
new String[] { "line1","line2" },
new int[] {R.id.line_a, R.id.line_b});
listViewAdapter2 = new SimpleAdapter(getActivity(), list2,
R.layout.listview_layout_3,
new String[] { "line1","line2", "line3" },
new int[] {R.id.line_a1, R.id.line_b1, R.id.line_c1});
setlistadapter(listViewAdapter);
setlistadapter(listViewAdapter2);
}
private String[][] userInfo =
{{"User","Dummy"},
{"Email Address","Dummy@dummymail.com"},
{"User Type","Staff"},
{"Contact Number","07111111111"}};
private String[][] ListingsArray =
{{"audi a3","brand new audi a3 with alloywheels, cd player", "£11000"},
{"HTC One x","brand new android smartphone", "£450"},
{"Acer Laptop","Acer Laptop with windows 7", "£300"},
{"Sunglass","Oakley Sunglasses in great condition", "£100"}};
}
片段的xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/lightgrey"
android:text="@string/userInfoHeader"
android:textSize="15sp"
android:text/>
<ListView
android:id="@+id/android:list"
android:layout_width="fill_parent"
android:layout_height="184dp"
android:layout_alignParentLeft="true"
android:layout_below="@+id/textView2" >
</ListView>
<TextView
android:id="@+id/textView3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/android:list"
android:background="@color/lightgrey"
android:text="@string/listingsHeader"
android:textSize="15sp"
android:text/>
<ListView
android:id="@+id/android:list2"
android:layout_width="fill_parent"
android:layout_height="184dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true" >
</ListView>
</RelativeLayout>
列表视图也为每个列表使用自定义布局,如果也需要代码,请告诉我并上传它.
解决方法:
您需要使用每个ListView相应地设置两个适配器….
ListView list = (ListView)findViewById(R.id.list);
ListView list2 = (ListView)findViewById(R.id.list2);
list.setAdapter(...)
list2.setAdapter(...)
…但是你没有两个ListViews在玩.每次调用setAdapter时都使用ListFragment,您将单个ListView设置为给定的内容.您需要将ListFragement调整为Fragment,并在Fragment中有两个单独的ListView,然后按照上面的说明设置每个ListView.
android – R.layout.listview与R.id.listview相同
ListView list= (ListView) findViewById(R.id.listView1); ListView list= (ListView) findViewById(R.layout.listView1);
它会引用相同的ListView吗?这两个片段之间有什么区别吗?
解决方法
R.id.listView1: –
表示在布局(您的XML文件)中声明的View的id为android:id =“@ id / listView1”
和
R.layout.listView1: –
表示格式为res – >的布局文件(xml文件).布局目录
你可以做
ListView list= (ListView) findViewById(R.id.listView1);
因为ListView是View系列.
但你做不到
ListView list= (ListView) findViewById(R.layout.listView1);
今天关于android – 线性布局中的两个ListView和android线性布局两种形式的分享就到这里,希望大家有所收获,若想了解更多关于Android ListView 扩展 DragSortListView、Android ListView多布局、android – listfragment中的多个listview、android – R.layout.listview与R.id.listview相同等相关知识,可以在本站进行查询。
本文标签: