嘿各位我在这里的第一篇文章...我试着写一个自定义过滤器来过滤我的arrayadapter中的arraylist,这样当我点击按钮时我的listview被过滤了.
例如,当我点击我的按钮时
public void onClick(View arg0) {
String abc = "abc";
m_adapter.getFilter().filter(abc);
}
Run Code Online (Sandbox Code Playgroud)
但是,当我点击我的按钮时,我的应用程序意外终止.这是我的arrayadapter和过滤器的代码.请帮我.
package com.ntu.rosemobile.searchlist;
public class ResultsAdapter extends ArrayAdapter<SearchItem> implements Filterable{
public ArrayList<SearchItem> subItems;
public ArrayList<SearchItem> allItems;
private LayoutInflater inflater;
private PTypeFilter filter;
public ResultsAdapter(Context context, int textViewResourceId, ArrayList<SearchItem> items) {
super(context, textViewResourceId, items);
this.subItems = items;
this.allItems = this.subItems;
inflater= LayoutInflater.from(context);
}
@Override
public Filter getFilter() {
if (filter == null){
filter = new PTypeFilter();
}
return filter;
}
//@Override
public View getView(int position, View convertView, ViewGroup …Run Code Online (Sandbox Code Playgroud) 我正在尝试构建一个包含行的自定义视图的列表,每行包含一个图像视图和两个文本视图.
为了做到这一点,我扩展了ArrayAdapter类(称为PostersArrayAdapter)并重写了getView()方法,以便在数据和行布局之间建立正确的连接.
但是,当我尝试使用一些PosterData类(我的实现)构造一个带有一些数据的PostersArrayAdapter时,结果是适配器为空,意味着getCount()返回零并且listView为空.
任何人都可以建议我做错了什么?我依赖于我在这里找到的代码 - http://www.vogella.de/articles/AndroidListView/article.html
非常感谢你!
这里是相关的代码:( PosterData类只是一个有两个字符串字段的类)
public class PostersListActivity extends ListActivity {
final private int NUM_OF_PICS = 2;
private ContentGetter cg;
private PosterData[] posters;
private ListView listView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
cg = new ContentGetter(NUM_OF_PICS);
try
{
posters = cg.parseIndexFile();
int res = cg.DownloadPosterPics(1);
}
catch (ClientProtocolException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
// Use our own list adapter
listView = (ListView)findViewById(android.R.id.list);
//listView.setAdapter((ListAdapter) new ArrayAdapter<String>(this,R.layout.list_item,R.id.title,titles));
PostersArrayAdapter postersAdapter = new …Run Code Online (Sandbox Code Playgroud) 我想知道如何从ListView中的目录显示文件.这些文件可以列出:
File dir = new File(dirPath);
File[] filelist = dir.listFiles();
Run Code Online (Sandbox Code Playgroud)
并添加到ListView通道ArrayAdapter但我没有得到的使用ArrayAdapter.
directory android file android-arrayadapter android-listview
我一直试图弄清楚如何使用ArrayAdapter类,并从文档:http://developer.android.com/reference/android/widget/ArrayAdapter.html,我看到构造函数需要一个名为textViewResourceId的整数.
这究竟是什么?
编辑:从更多的研究和答案,看起来它必须是我在包含接口代码的xml文件中定义的TextView的id.但我在这里看到了这个例子:
ArrAdapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,myArrayList)
那么如何在这里使用android.R.layout.simple_list_item_1?这到底是什么意思?我只熟悉使用R.id.idOfMyViewHere
我想建立一个自定义列表(Pinterest网格布局),我想扩展AbsListView.周围有很好的例子吗?这似乎非常困难.
谢谢托比亚
我最近在这个SO问题上添加了一笔赏金,但是我意识到原始问题要求使用SimpleAdapter而不是ArrayAdapter.所以,这个问题与ArrayAdapter有关:
我希望能够使用多个搜索词在ListView中过滤ArrayAdapter.例如,如果我的列表包含以下项目:
a thing
another thing
a different thing
nothing
some thing
Run Code Online (Sandbox Code Playgroud)
如果我搜索"事物" ,则应在过滤结果中返回所有条款.这是可以使用以下代码完成的正常行为:
private TextWatcher filterTextWatcher = new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
myAdapter.getFilter().filter(s.toString());
}
};
Run Code Online (Sandbox Code Playgroud)
然而; 如果我输入搜索短语' a thing',我希望显示以下结果:
a thing
another …Run Code Online (Sandbox Code Playgroud) 我有ListView几行.每行都有一个button.
我想按钮启动FragmentTransaction来替换ListView所在的Fragment.
但是,在该getView()方法中Adapter,此行不起作用:
FragmentTransaction t = getContext().getSupportFragmentManager().beginTransaction();
它不喜欢上下文.
这可以通过这种方式完成,还是交易必须在其他地方进行?
我需要通过滑动从gridView获取tile并将其设置为动画以显示它下方的按钮.如何让视图用它进行一些UI操作?这是我的活动和适配器代码的片段:
public class HomeActivity extends FragmentActivity {
......
class MyGestureDetector extends SimpleOnGestureListener
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
try {
int position = mGridView.pointToPosition((int) e1.getX(), (int) e1.getY());
if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
View v = mMyAdapter.getView(position, null, mGridView);
v.setVisibility(View.GONE);
}
}
}
Run Code Online (Sandbox Code Playgroud)
}
MyAdapter class:
public class StatusTileAdapter extends ArrayAdapter<MyObject> {
......
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView …Run Code Online (Sandbox Code Playgroud) 我正在尝试ListView使用自定义布局创建.listView应该看起来像item.xml下面发布的每个项目.
在代码中,我用过
adapter = new ArrayAdapter<T>(getApplicationContext(), R.layout.listi_tems_layout, topicsList);
Run Code Online (Sandbox Code Playgroud)
但它不起作用,因为ArrayAdapter<T>接受第二个参数的构造函数int就像
android.R.layout.simple_list_item_1
,在我的情况下,它是自定义布局
R.layout.listi_tems_layout
Run Code Online (Sandbox Code Playgroud)
我应该使用哪个适配器或如何解决这个问题.谢谢
项目:
<?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="wrap_content"
android:orientation="horizontal"
android:weightSum="3">
<TextView
android:id="@+id/tvlist_topic"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<ImageView
android:id="@+id/ivList_delete"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:clickable="true"
android:src="@drawable/delete_icon"
android:contentDescription="icon to delete item from the Listview"
android:layout_weight="1"/>
<CheckBox
android:id="@+id/cbList_hook"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:checked="false"
android:layout_weight="1"/>
Run Code Online (Sandbox Code Playgroud)
主要布局:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="${relativePackage}.${activityClass}" >
....
....
....
<ListView
android:id="@+id/lvEco_topics"
android:layout_width="match_parent"
android:layout_height="470dp"
android:layout_below="@id/tvEco_topic"
android:layout_marginTop="30dp"
android:scrollbars="vertical"
android:divider="@android:drawable/alert_light_frame"></ListView>
<Button …Run Code Online (Sandbox Code Playgroud) 我有一个完美的自定义列表视图.现在,我希望列表中的每个项目都有一个下拉菜单,这样当用户点击列表中的任何项目时,下拉菜单会显示两个选项 - 编辑和删除.根据用户的选择,列表视图项被处理.
我想知道将下拉菜单添加到每个listview项的方法.
列表项的xml文件 -
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="120dp"
android:background="#FFFFFF">
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:id="@+id/chkitem"
android:layout_alignParentLeft="true"
/>
<TextView android:id="@+id/textTitle"
android:layout_width="200dp"
android:layout_height="60dp"
android:textSize="15dp"
android:textColor="#000000"
android:textStyle="bold"
android:gravity="fill"
android:layout_toRightOf="@+id/chkitem"
/>
<TextView
android:layout_width="200dp"
android:layout_height="60dp"
android:id="@+id/detail"
android:textSize="15dp"
android:textStyle="italic"
android:gravity="fill"
android:layout_toRightOf="@+id/chkitem"
android:layout_below="@+id/textTitle"/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
适配器类
public class list_addr_adapter extends ArrayAdapter<list_addr> {
Context context;
int layoutResourceId;
public list_addr_adapter(Context context, int layoutResourceId, List<list_addr> items) {
super(context, layoutResourceId, items);
this.layoutResourceId = layoutResourceId;
this.context = context;
// this.listener=callback;
}
/*private view holder class*/
private class ViewHolder { …Run Code Online (Sandbox Code Playgroud) android listview android-custom-view android-arrayadapter drop-down-menu