我已经开始学习Android开发了,并且正在遵循一本书中的一个todolist示例:
// Create the array list of to do items
final ArrayList<String> todoItems = new ArrayList<String>();
// Create the array adapter to bind the array to the listView
final ArrayAdapter<String> aa;
aa = new ArrayAdapter<String>( this,
android.R.layout.simple_list_item_1,
todoItems
);
myListView.setAdapter(aa);
Run Code Online (Sandbox Code Playgroud)
我无法理解这段代码特别是这一行:
android.R.layout.simple_list_item_1
Run Code Online (Sandbox Code Playgroud) 我试图设置我的视图以显示ListView我想要显示的文件(文本文件)时收到错误.我很确定它与xml有关.我只想显示来自的信息this.file = fileop.ReadFileAsList("Installed_packages.txt");.我的代码:
public class Main extends Activity {
private TextView tv;
private FileOperations fileop;
private String[] file;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.fileop = new FileOperations();
this.file = fileop.ReadFileAsList("Installed_packages.txt");
setContentView(R.layout.main);
tv = (TextView) findViewById(R.id.TextView01);
ListView lv = new ListView(this);
lv.setTextFilterEnabled(true);
lv.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item, this.file));
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// When clicked, show a toast …Run Code Online (Sandbox Code Playgroud) 我有一个ListView显示新闻项目.它们包含图像,标题和一些文本.图像被加载到一个单独的线程(带有队列和所有)中,当下载图像时,我现在调用notifyDataSetChanged()列表适配器来更新图像.这是有效的,但是getView()因为notifyDataSetChanged()调用getView()了所有可见的项目而被过于频繁地调用.我想只更新列表中的单个项目.我该怎么做?
我目前使用的方法存在的问题是:
我有ListView,它有一些事件.事件按日排序,我希望每天都有标题日期,然后在下面收听事件.
以下是我填充该列表的方式:
ArrayList<TwoText> crs = new ArrayList<TwoText>();
crs.add(new TwoText("This will be header", event.getDate()));
for (Event event : events) {
crs.add(new TwoText(event.getStartString() + "-" + event.getEndString(), event.getSubject()));
}
arrayAdapter = new TwoTextArrayAdapter(this, R.layout.my_list_item, crs);
lv1.setAdapter(arrayAdapter);
Run Code Online (Sandbox Code Playgroud)
这就是我的类TwoText看起来的样子:
public class TwoText {
public String classID;
public String state;
public TwoText(String classID, String state) {
this.classID = classID;
this.state = state;
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我的TwoTextArrayAdapter类的外观:
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
public class TwoTextArrayAdapter extends …Run Code Online (Sandbox Code Playgroud) 我的问题是:
我想知道使用BaseAdapter和之间的区别ArrayAdapter.
我一直在实现我想要的东西ArrayAdapters.
它是否会影响ListView实现它的适配器接口的性能?
而且,最后一个问题是,我能否实现ListView使用其中任何一项所做的任何事情Adapters,或者,在某些情况下,只能使用特定的适配器?
performance android listview android-arrayadapter baseadapter
我正在尝试制作一个包含名字的列表.此列表应该是可修改的(添加,删除,排序等).但是,每当我尝试更改ArrayAdapter中的项目时,程序都会崩溃,并显示java.lang.UnsupportedOperationException错误.这是我的代码:
ListView panel = (ListView) findViewById(R.id.panel);
String[] array = {"a","b","c","d","e","f","g"};
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, array);
adapter.setNotifyOnChange(true);
panel.setAdapter(adapter);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
adapter.insert("h", 7);
}
});
Run Code Online (Sandbox Code Playgroud)
我尝试了插入,删除和清除方法,但没有一个工作.有人会告诉我我做错了什么吗?
我面临一个非常普遍的问题:我制定了一项活动,现在事实证明它应该显示一些项目ScrollView.正常的方法是使用现有的ListAdapter,将它连接到一个ListView和BOOM我有我的项目列表.
但是你不应该把它嵌套ListView在一个,ScrollView因为它搞砸了滚动 - 甚至Android Lint抱怨它.
所以这是我的问题:
如何将a连接ListAdapter到LinearLayout类似的东西?
我知道这个解决方案不会针对很多项目进行扩展,但我的列表很短(<10项),因此不需要重新查看视图.性能明智我可以将所有视图直接放入LinearLayout.
我想出的一个解决方案是将我现有的活动布局放在.的headerView部分ListView.但这感觉就像滥用这种机制所以我正在寻找一个更清洁的解决方案.
想法?
更新:为了激发正确的方向,我添加了一个示例布局来显示我的问题:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/news_detail_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:visibility="visible">
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFF"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:paddingLeft="@dimen/news_detail_layout_side_padding"
android:paddingRight="@dimen/news_detail_layout_side_padding"
android:paddingTop="@dimen/news_detail_layout_vertical_padding"
android:paddingBottom="@dimen/news_detail_layout_vertical_padding"
>
<TextView
android:id="@+id/news_detail_date"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:gravity="center_horizontal"
android:text="LALALA"
android:textSize="@dimen/news_detail_date_height"
android:textColor="@color/font_black"
/>
<Gallery
android:id="@+id/news_detail_image"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:paddingTop="5dip"
android:paddingBottom="5dip"
/>
<TextView
android:id="@+id/news_detail_headline"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:gravity="center_horizontal"
android:text="Some awesome …Run Code Online (Sandbox Code Playgroud) 我有一个ListView,其行中应该有以下布局:
HEADER
Text
Run Code Online (Sandbox Code Playgroud)
HEADER应该是静态的,但Text每隔几秒就会发生变化.
我通过填充a来实现它String[] array,将其传递给a ArrayAdapter并在每次数据更改时设置它:
data_array = populateString();
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, data_array);
listView.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)
我的问题是我不知道如何以上面的格式显示数据.
提前致谢.
java android android-arrayadapter android-layout android-listview
android ×10
java ×2
listview ×2
android-view ×1
baseadapter ×1
header ×1
layout ×1
performance ×1
xml ×1