ListView我AlertDialog在Android中有一个设置,我试图添加分隔符作为标题标题来帮助组织信息.我想出了如何显示它们......但它们仍然可由用户选择,这是不好的.
有没有办法禁用Android中可选择的项目ListView?我找到了一种方法isEnabled(int position)来查看某个项目是否已启用,但没有查看是否已禁用该项目.
我在尝试创建通用ArrayAdapter时遇到了问题.这可能与我对Java中的泛型有限的理解有关,并且希望有人可以让我直截了当.基本上我有一个抽象的基本适配器类:
public abstract class BaseAdapter<T> extends ArrayAdapter<T>
{
....
private List<T> items;
....
protected abstract List<T> build(JSONArray jsonArray);
....
@Override
public T getItem(int position)
{
return items.get(position);
}
....
}
Run Code Online (Sandbox Code Playgroud)
然后我有一个扩展此基类的适配器:
public class MyAdapter extends BaseAdapter<BaseModel>
{
....
@Override
protected List<BaseModel> build(JSONArray jsonArray)
{
if (useBaseModel())
{
return BaseModel.buildBaseModels(jsonArray); //returns List<BaseModel>
}
else
{
return SubclassModel.buildSubclassModels(jsonArray); //returns List<SubclassModel>
}
}
....
}
Run Code Online (Sandbox Code Playgroud)
模型定义为:
public class BaseModel{...}
public class SubclassModel extends BaseModel{....}
Run Code Online (Sandbox Code Playgroud)
这不会编译,因为即使SubclassModel扩展了BaseModel,它们的列表也不相同.这个线程(将List <SubClass>强制转换为List <BaseClass>的最有效方法)解释了这一点,并说使用它代替:
List<? extends BaseModel>
Run Code Online (Sandbox Code Playgroud)
当我改为: …
我目前正在使用阵列适配器.我在网上遇到的所有示例都使用了阵列适配器的单独布局.我想知道它是否有默认布局.我的代码是这样的
ArrayAdapter<String> adapt = new ArrayAdapter<String>(this,,item);
Run Code Online (Sandbox Code Playgroud)
第二个参数应该是什么,以便我不指定资源布局并使用其默认值?
所述的充气方法LayoutInflater抽象类具有作为取充气方法的第二个参数ViewGroup根.从文档中,它被称为"可选视图,作为生成的层次结构的父级".
有人可以举例说明如何使用这个参数吗?那你会放在那里?A ViewGroup可以是任何类型的布局LinearLayout.
我还不太明白如何处理这个参数.如果您正在膨胀的视图不是此处输入的布局的一部分,那么它将给出错误.不明白它的目的.
更多来自文档:
public View inflate (XmlPullParser parser, ViewGroup root)
Added in API level 1
Inflate a new view hierarchy from the specified xml node. Throws InflateException if there is an error.
出于性能原因,重要的是,视图通胀在很大程度上依赖于在构建时完成的XML文件的预处理.因此,目前还不能使用LayoutInflater有XmlPullParser过在运行时一个普通的XML文件.
参数解析器包含视图层次结构描述的XML dom节点.
root可选视图是生成的层次结构的父级.返回膨胀层次结构的根视图.如果提供了root,则这是根视图; 否则它是膨胀的XML文件的根.
我想在ListView中删除一个单击的项目.
解决方案是使用ArrayList而不是String [];
这是我的代码:
公共类MyDialogFragment扩展DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Critères Supplémentaires");
builder.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
onCancel(dialog);
}
}
);
LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View mView = inflater.inflate(R.layout.fragment_dialog, null);
ListView mListView = (ListView) mView.findViewById(R.id.lvListe);
String[] mValues = {"Orientation", "Nombre de Chambres", "Nombre de Salle de bains", "Nombre de toilettes", "Cave", "Parking", "Garage", "Jardin"};
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, mValues);
mListView.setAdapter(adapter);
mListView.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() { …Run Code Online (Sandbox Code Playgroud) AutoCompleteTextView在纵向模式的下拉列表中显示它的建议.我想在对话框或横向模式的下拉列表中显示建议,此处EditText和键盘全屏显示.
我应该在适配器中使用哪种布局将提示显示为横向模式下的对话框.我目前正在使用android.R.layout.simple_dropdown_item_1line.
我正在尝试AutoCompleteTextView使用我的自定义填充ArrayAdapter.我认为添加显示值可以正常工作.唯一的问题是没有显示下拉列表.有人知道如何看到这个下拉列表吗?每次我都会看到下拉列表,我可以看到日志消息说:
DisplayListCanvas:DisplayListCanvas在未绑定的RenderNode上启动(没有mOwningView)
我的适配器代码:
public class UserSearchAdapter extends ArrayAdapter<Profile> {
Context context;
ArrayList profiles;
public UserSearchAdapter(Context context, int resource, ArrayList<Profile> objects) {
super(context, resource, objects);
this.context = context;
this.profiles = objects;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(this.getContext())
.inflate(R.layout.single_user_item, parent, false);
}
Profile profile = (Profile) profiles.get(position);
TextView text = (TextView) convertView.findViewById(R.id.single_user_name_text);
text.setText(profile.getDisplayName());
return convertView;
}
}
Run Code Online (Sandbox Code Playgroud)
我的MainActivity代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_member_supervisor); …Run Code Online (Sandbox Code Playgroud) 嘿各位我在这里的第一篇文章...我试着写一个自定义过滤器来过滤我的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) 我一直试图弄清楚如何使用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