我有一个列表视图,并希望禁用其中的每个单元格,以便当您点击它时文本颜色保持不变.
但我希望它可以滚动.
我怎样才能做到这一点?
范围: - 使用overriden ArrayAdapter; - 使用选择器; - 使用isEnabled禁用项目.
目标: - 禁用某些列表项并通过选择器加载禁用状态视图.
问题: - 一切正常(自定义视图,选择器用于未聚焦,focuesd和按下状态)但禁用的项目不使用选择器用于禁用状态.
调查:当我使用isEnabled禁用listview中的某些项时,层次结构查看器显示禁用的项目不可聚焦,不可点击但启用(!).
这是一个错误或缺少什么?
PS实际上,docs说isEnabled没有为列表项做setEnabled(false),它使它成为一个divider(?)对象.PPS我也尝试使用if语句将我的View(在getView中)设置为isEnabled(false).但它只适用于重点项目?
我的选择器看起来像:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Disabled -->
<item
android:state_enabled="false"
android:textColor="@color/greyDark"
android:drawable="@drawable/list_item_disabled" />
<!-- Pressed -->
<item
android:state_enabled="true"
android:state_pressed="true"
android:textColor="@android:color/white"
android:drawable="@drawable/list_item_pressed" />
<!-- Focused -->
<item
android:state_enabled="true"
android:state_focused="true"
android:textColor="@android:color/white"
android:drawable="@drawable/list_item_focused" />
<!-- Default -->
<item
android:state_enabled="true"
android:drawable="@drawable/list_item_unfocused" />
</selector>
Run Code Online (Sandbox Code Playgroud) 我在AutoCompleteTextView上使用ArrayAdapter.results.values具有预期值但我在UI上没有列表.
public class CustomArrayAdapter extends ArrayAdapter<String> implements Filterable {
private final Object mLock = new Object();
private CustomFilter mFilter;
public ArrayList<String> mItems;
public ArrayList<String> mFiltered;
public CustomArrayAdapter(Context context, int textViewResourceId) {
super(context, textViewResourceId);
mItems = new ArrayList<String>();
mFiltered = new ArrayList<String>();
}
public Filter getFilter() {
if (mFilter == null) {
mFilter = new CustomFilter();
}
return mFilter;
}
@Override
public void add(String s) {
mItems.add(s);
}
private class CustomFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults …Run Code Online (Sandbox Code Playgroud) 我对Java/Android完全不熟悉并且坚持使用listviews.
我想要的是在listview中连续4行使用不同的字体样式
rowlayout.xml
<TextView
android:id="@+id/1"
android:visibility="gone"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/2"
android:textSize="30sp"
android:textStyle="bold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/3"
android:typeface="sans"
android:textSize="20sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/4"
android:typeface="sans"
android:textSize="15sp"
android:textStyle="italic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
Run Code Online (Sandbox Code Playgroud)
我在一个单独的xml文件中有这个
results.xml
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@id/TitleLbl" >
</Listview>
Run Code Online (Sandbox Code Playgroud)
我的数组适配器看起来像这样
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.rowlayout, R.id.2, Array);
setListAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)
我要做的是获取一个arraylist(包含ID,名称,姓氏和数字)来填充列表视图,以便每个信息都在行中自己的行.
上面的数组适配器工作,但四个信息中的每一个都在它们自己的行中.
有人可以帮忙吗?
(另外,我已经在互联网上搜索并尝试对此进行排序,但似乎无法找到任何可以帮助我的东西)
ArrayAdapter的构造函数如下:
ArrayAdapter(Context context, int textViewResourceId, T[] objects)
我刚接触java和android,之前我没有看到数据类型T[],有人可以解释它是什么或者给我一些关于它的网页吗?
我有一个代码,它遵循以下 -
for(int i=0; i < jArray.length() ; i++) {
json_data = jArray.getJSONObject(i);
int id=json_data.getInt("id");
String name=json_data.getString("name");
Log.d(name,"Output");
}
Run Code Online (Sandbox Code Playgroud)
当我查看LogCat时,我看到了查询的所有"名称",每条记录都被打印出来.我只需要将这些结果插入ListView.我怎么能做到这一点?
PS - 我没有ArrayAdapter的单独类.这可能是原因吗?
我正在使用ArrayAdapter我的数据绑定ArrayList到我ListView和我使用一个AlertDialog数据插入我的数据 Arraylist.我的问题是,ListView在完成更改后我无法刷新我的内容.
码
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.config_hidden);
listView=(ListView) findViewById(R.id.hiddenList);
xmlFileManager=new XmlFileManager(this);
addNumber=(Button) findViewById(R.id.addNum);
addNumber.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
LayoutInflater factory = LayoutInflater.from(HiddenCall.this);
final View alertDialogView = factory.inflate(R.layout.add_number, null);
AlertDialog.Builder adb = new AlertDialog.Builder(HiddenCall.this);
adb.setView(alertDialogView);
adb.setTitle(R.string.dialog_title);
adb.setIcon(R.drawable.phone);
final AlertDialog alertDialog = adb.create();
adb.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
numberToAdd=(EditText) alertDialogView.findViewById(R.id.numberToAdd);
String number = numberToAdd.getText().toString();
if(number.length()>0){
xmlFileManager.addNumberToXml(number , HIDDEN_NUMBER_TYPE);
adapter …Run Code Online (Sandbox Code Playgroud) 希望我能成功解释我的情况.
我有一个活动(A),它基本上是一个添加新项目的表单,文本字段,时间和位置字段很少.当单击一个setlocation按钮时,它会调用第二个Activity(B),它具有一个带有自定义ArrayAdapter的列表视图,该ArrayAdapter为locactins提供建议.单击一个项目(适配器类中的OnClickListener)时需要将其传递回活动A.
从A调用活动B.
Intent I = new Intent(getApplicationContext(), TaskGeoSetActivity.class);
startActivityForResult(I, LOC_ACTIVITY_CODE);
Run Code Online (Sandbox Code Playgroud)
在活动B中设置适配器
Adapter = new TaskGeoSubBaseAdapter(getApplicationContext(), R.id.sugtext, result);
Adapter.setActivity(TaskGeoSetActivity.this);
lv.setAdapter(Adapter);
Run Code Online (Sandbox Code Playgroud)
适配器中的OnClick事件
public void setActivity(Activity act) {
parentAct = act;
}
private final OnClickListener locpicker = new OnClickListener() {
@Override
public void onClick(View v) {
Address a = items.get((Integer) v.getTag());
Intent intent = new Intent(context, TaskAddActivity.class);
intent.putExtra("Address", a);
parentAct.setResult(parentAct.RESULT_OK, intent);
}
};
Run Code Online (Sandbox Code Playgroud) 我有一个带有客户ArrayAdapter和自定义ListItem-XML的ListView.在这个ListView的底部,我添加了一个带有Button的FooterView.现在,我想在单击此Button时获取每个ListItem中三个EditTexts的所有值.
以下是我的代码:
activity_checklistresult.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="match_parent">
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
result_inner_view.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/item_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center">
<TextView
android:id="@+id/tv_result_amount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/default_margin" />
<EditText
android:id="@+id/et_result_amount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/default_margin"
android:inputType="number" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_vertical"
android:orientation="vertical">
<TextView
android:id="@+id/tv_result_product_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="end"
android:layout_margin="@dimen/default_margin" />
<AutoCompleteTextView
android:id="@+id/actv_search_product"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:singleLine="true"
android:ellipsize="end"
android:layout_margin="@dimen/default_margin"
android:inputType="textAutoComplete" />
</LinearLayout>
<TextView
android:id="@+id/tv_result_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/default_margin" />
<EditText
android:id="@+id/et_result_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/default_margin"
android:inputType="numberDecimal" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
ResultListActivity.java:
public …Run Code Online (Sandbox Code Playgroud) android list android-arrayadapter android-listview android-edittext
我有一个enum,它有一个映射到字符串资源id的属性,如下所示:
public enum MyEnum{
FIRST(1,R.string.first_enum_desc),
SECOND(2,R.string.second_enum_desc);
private int mId;
private int mDescriptionResourceId;
private MyEnum(id,descriptionResourceId) {
mId = id;
mDescriptionResourceId = descriptionResourceId;
}
public toString(context){
return context.getString(mDescriptionResourceId);
}
}
Run Code Online (Sandbox Code Playgroud)
我想用枚举填充一个微调器,问题只是使用我的类型的适配器:
Spinner spinner;
spinner.setAdapter(new ArrayAdapter<MyEnum>(this, android.R.layout.simple_spinner_item, MyEnum.values()));
Run Code Online (Sandbox Code Playgroud)
我没有得到字符串资源描述,因为适配器隐式调用toString(),它返回枚举名称.我不知道该怎么办.无论我需要Context来获取字符串值.有人可以建议实现我想要的最佳方式吗?我只需要一个正确的方向.任何意见,将不胜感激.非常感谢!