标签: android-arrayadapter

Android:如何禁用ListView?

我有一个列表视图,并希望禁用其中的每个单元格,以便当您点击它时文本颜色保持不变.

但我希望它可以滚动.

我怎样才能做到这一点?

android listview highlighting android-arrayadapter

4
推荐指数
1
解决办法
7951
查看次数

使用selector和isEnabled()禁用listview项

范围: - 使用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)

xml android listview android-arrayadapter

4
推荐指数
1
解决办法
7354
查看次数

自定义ArrayAdapter过滤器没有结果

我在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)

android filter android-arrayadapter

4
推荐指数
1
解决办法
8953
查看次数

Android ListView和ArrayAdapter/Arraylist

我对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,名称,姓氏和数字)来填充列表视图,以便每个信息都在行中自己的行.

上面的数组适配器工作,但四个信息中的每一个都在它们自己的行中.

有人可以帮忙吗?

(另外,我已经在互联网上搜索并尝试对此进行排序,但似乎无法找到任何可以帮助我的东西)

java android listview adapter android-arrayadapter

4
推荐指数
1
解决办法
1万
查看次数

什么是T []对象?

ArrayAdapter的构造函数如下:

ArrayAdapter(Context context, int textViewResourceId, T[] objects)

我刚接触java和android,之前我没有看到数据类型T[],有人可以解释它是什么或者给我一些关于它的网页吗?

java android android-arrayadapter

4
推荐指数
1
解决办法
3248
查看次数

如何将JSONArray转换为ListView?

我有一个代码,它遵循以下 -

  1. 通过HttpClient连接到Web服务到PHP文件
  2. 返回SQL查询的结果
  3. 返回格式是jArray(JSONArray)

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的单独类.这可能是原因吗?

java android json android-arrayadapter

4
推荐指数
1
解决办法
2万
查看次数

从ArrayAdapter刷新ListView

我正在使用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)

android android-arrayadapter android-listview

4
推荐指数
1
解决办法
3万
查看次数

Android:使用适配器在活动之间传递参数

希望我能成功解释我的情况.

我有一个活动(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)

适配器中的O​​nClick事件

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)

android android-arrayadapter android-activity

4
推荐指数
1
解决办法
4078
查看次数

Android - 使用自定义ArrayAdapter获取ListView的每个EditTexts值

我有一个带有客户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

4
推荐指数
1
解决办法
1万
查看次数

使用具有字符串资源的Enum填充Spinner

我有一个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来获取字符串值.有人可以建议实现我想要的最佳方式吗?我只需要一个正确的方向.任何意见,将不胜感激.非常感谢!

java enums android android-arrayadapter android-spinner

4
推荐指数
1
解决办法
3091
查看次数