如何修复此 ArrayAdapter 要求资源 ID 为 TextView

2023-12-22

我是 android 新手,我正在尝试使用 json 开发带有 gridview 和 listview 的应用程序。通过 json,我在 gridview 中显示了一组图像,并根据 gridview 的位置,我在下一页列表视图中显示结果。这是我的 Sub_Category.java (第二页 java 文件)

package com.javatechig.gridviewexample;
public class Sub_Categories extends ActionBarActivity {
private ArrayList<GridItem> SubCatgyData;
private static final String TAG = Sub_Categories.class.getSimpleName();
public String TAG1 = "Value for ID";
public String TAG2 = "Value for subCategory";
public String TAG4 = "Value for subCategory in main method";
public String TAG3 = "DONE";
public String categoryID;
private ProgressBar mProgressBar;
private ListView listView;
public String subURL = "http://www.prateektechnosoft.com/justcall/cities/gridsubcategories/chennai/";
public String URLwithID;
private ListAdapter mListAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_sub__categories);
    categoryID = getIntent().getStringExtra("ID");
    Log.e(TAG1, categoryID);
    SubCatgyData = new ArrayList<>();
    URLwithID = subURL + categoryID;

    mProgressBar = (ProgressBar) findViewById(R.id.progressBar2);
    Log.e(TAG3, "Before Execute");
    new AsyncHttpTask().execute(URLwithID);
    Log.d(TAG4, String.valueOf(SubCatgyData.size()));
    Log.e(TAG3, "After Execute");
    mProgressBar.setVisibility(View.VISIBLE);


    listView=(ListView) findViewById(R.id.listView2);


    ArrayAdapter adapter = new ArrayAdapter(Sub_Categories.this,android.R.layout.simple_list_item_2,SubCatgyData);
    listView.setAdapter(adapter);


}

public class AsyncHttpTask extends AsyncTask<String, Void, Integer> {

    @Override
    protected Integer doInBackground(String... params) {
        Integer result = 0;
        try {
            // Create Apache HttpClient
            HttpClient httpclient = new DefaultHttpClient();
            HttpResponse httpResponse = httpclient.execute(new HttpGet(params[0]));
            int statusCode = httpResponse.getStatusLine().getStatusCode();

            // 200 represents HTTP OK
            if (statusCode == 200) {
                String response = streamToString(httpResponse.getEntity().getContent());
                parseResult(response);
                result = 1; // Successful
            } else {
                result = 0; //"Failed
            }
        } catch (Exception e) {
            Log.d(TAG, e.getLocalizedMessage());
        }
        runOnUiThread(new Runnable() {
            public void run() {
                listView = (ListView) findViewById(R.id.listView2);


                ArrayAdapter adapter = new ArrayAdapter(Sub_Categories.this, android.R.layout.list_content, SubCatgyData);
                listView.setAdapter(adapter);

            }
        });

        Log.e(TAG3, "Done in do background methid");
        return result;
    }

            @Override
    protected void onPostExecute(Integer result) {
        // Download complete. Lets update UI

        if (result == 0) {

            Toast.makeText(Sub_Categories.this, "Failed to fetch data!", Toast.LENGTH_SHORT).show();
        }


        //Hide progressbar
        mProgressBar.setVisibility(View.GONE);
        Log.e(TAG3, "Done in onPostExecute methid");
    }

   }
    String streamToString(InputStream stream) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(stream));
        String line;
        String result = "";
        while ((line = bufferedReader.readLine()) != null) {
            result += line;
        }

        // Close stream
        if (null != stream) {
            stream.close();
        }
        Log.e(TAG3, "Done in streamTOString methid");
        return result;
    }

    private void parseResult(String result) {
        try {
            //JSONObject response = new JSONObject(result);
            JSONArray posts = new JSONArray(result);
            GridItem item;
            for (int i = 0; i < posts.length(); i++) {
                JSONObject post = posts.optJSONObject(i);
                String catid = post.optString("suB_CATEGORYNAME");
                item = new GridItem();
                item.setID(catid);
                SubCatgyData.add(item);
            }


            Log.d(TAG2, String.valueOf(SubCatgyData.size()));

        } catch (JSONException e) {
            e.printStackTrace();
        }
        Log.e(TAG3, "Done in parseResult methid");
        return;
    }
}

这是我的布局文件。

<?xml version="1.0" encoding="utf-8"?>
<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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.javatechig.gridviewexample.Sub_Categories">

<ListView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/listView2"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />
<ProgressBar
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/progressBar2"
    android:layout_centerInParent="true"
    android:visibility="gone"/>

</RelativeLayout>

这是我的日志。我无法修复这个错误。请帮我。

12-15 11:44:33.528 25575-25575/com.javatechig.gridviewexample E/ArrayAdapter: You must supply a resource ID for a TextView
12-15 11:44:33.528 25575-25575/com.javatechig.gridviewexample D/AndroidRuntime: Shutting down VM
12-15 11:44:33.529 25575-25575/com.javatechig.gridviewexample E/AndroidRuntime: FATAL EXCEPTION: main
                                                                              Process: com.javatechig.gridviewexample, PID: 25575
                                                                            java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView
                                                                                at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:393)
                                                                                at android.widget.ArrayAdapter.getView(ArrayAdapter.java:369)
                                                                                at android.widget.AbsListView.obtainView(AbsListView.java:2346)
                                                                                at android.widget.ListView.measureHeightOfChildren(ListView.java:1280)
                                                                                at android.widget.ListView.onMeasure(ListView.java:1188)
                                                                                at android.view.View.measure(View.java:18788)
                                                                                at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715)
                                                                                at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
                                                                                at android.view.View.measure(View.java:18788)
                                                                                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
                                                                                at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
                                                                                at android.view.View.measure(View.java:18788)
                                                                                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
                                                                                at android.support.v7.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:453)
                                                                                at android.view.View.measure(View.java:18788)
                                                                                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
                                                                                at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
                                                                                at android.view.View.measure(View.java:18788)
                                                                                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
                                                                                at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
                                                                                at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
                                                                                at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)
                                                                                at android.view.View.measure(View.java:18788)
                                                                                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
                                                                                at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
                                                                                at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2643)
                                                                                at android.view.View.measure(View.java:18788)
                                                                                at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2100)
                                                                                at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1216)
                                                                                at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1452)
                                                                                at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
                                                                                at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)
                                                                                at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
                                                                                at android.view.Choreographer.doCallbacks(Choreographer.java:670)
                                                                                at android.view.Choreographer.doFrame(Choreographer.java:606)
                                                                                at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
                                                                                at android.os.Handler.handleCallback(Handler.java:739)
                                                                                at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                at android.os.Looper.loop(Looper.java:148)
                                                                                at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                                at java.lang.reflect.Method.invoke(Native Method)
                                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                             Caused by: java.lang.ClassCastException: android.widget.FrameLayout cannot be cast to android.widget.TextView
                                                                                at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:386)
                                                                                at android.widget.ArrayAdapter.getView(ArrayAdapter.java:369) 
                                                                                at android.widget.AbsListView.obtainView(AbsListView.java:2346) 
                                                                                at android.widget.ListView.measureHeightOfChildren(ListView.java:1280) 
                                                                                at android.widget.ListView.onMeasure(ListView.java:1188) 
                                                                                at android.view.View.measure(View.java:18788) 
                                                                                at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715) 
                                                                                at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461) 
                                                                                at android.view.View.measure(View.java:18788) 
                                                                                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 
                                                                                at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) 
                                                                                at android.view.View.measure(View.java:18788) 
                                                                                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 
                                                                                at android.support.v7.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:453) 
                                                                                at android.view.View.measure(View.java:18788) 
                                                                                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 
                                                                                at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) 
                                                                                at android.view.View.measure(View.java:18788) 
                                                                                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 
                                                                                at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465) 
                                                                                at android.widget.LinearLayout.measureVertical(LinearLayout.java:748) 
                                                                                at android.widget.LinearLayout.onMeasure(LinearLayout.java:630) 
                                                                                at android.view.View.measure(View.java:18788) 
                                                                                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 
                                                                                at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) 
                                                                                at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2643) 
                                                                                at android.view.View.measure(View.java:18788) 
                                                                                at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2100) 
                                                                                at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1216) 
                                                                                at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1452) 
                                                                                at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107) 
                                                                                at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013) 
                                                                                at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858) 
                                                                                at android.view.Choreographer.doCallbacks(Choreographer.java:670) 
                                                                                at android.view.Choreographer.doFrame(Choreographer.java:606) 
                                                                                at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844) 
                                                                                at android.os.Handler.handleCallback(Handler.java:739) 
                                                                                at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                                at android.os.Looper.loop(Looper.java:148) 
                                                                                at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                                at java.lang.reflect.Method.invoke(Native Method) 
                                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

提前致谢


由于您使用的是默认的ListView和ArrayAdapter,并且您只有一个数据列表,即子猫数据, 您应该使用 android.R.layout.simple_list_item_1 而不是 android.R.layout.simple_list_item_2。

两者的区别是android.R.layout.simple_list_item_1里面只有一个TextView,而android.R.layout.simple_list_item_2里面有两个TextView。

ArrayAdapter adapter = new ArrayAdapter(Sub_Categories.this,android.R.layout.simple_list_item_1,SubCatgyData);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何修复此 ArrayAdapter 要求资源 ID 为 TextView 的相关文章

随机推荐

  • jQuery 显示一个 Div 并隐藏其他 Div

    http jsfiddle net yrM3H 2 http jsfiddle net yrM3H 2 我有以下代码 jQuery document ready function jQuery toggle next hidden hide
  • 检查变量是否已设置然后回显而不重复?

    是否有一种简洁的方法来检查变量是否已设置 然后回显它而不重复相同的变量名称 而不是这个 我正在考虑这个 C 风格伪代码中的一些内容 PHP has sprintf http www php net manual en function sp
  • 如何更改@NotNull注释对应返回的响应JSON

    我有一个简单的代码 当 RequestBody 中不存在 customerId 时 它返回错误 json VO 类 public class OrderVO private int orderId NotNull message Custo
  • 如何向 html 5 视频添加嵌入链接

    如果您在 Discord 中链接 YouTube 视频 它会在 Discord 上显示为可播放的视频 而不仅仅是链接 对于我的视频 如果我从我的网站链接它们 不和谐会将它们显示为链接而不是视频 我听说我需要在其中嵌入链接 但我不知道我在寻找
  • 打印机 println:未创建新行

    我正在尝试使用 Apache POI 类将 Outlook MSG 文件解码为文本文件 一切正常 除了println的方法PrintWriter 它不会创建新行 它只是将每个句子直接一个接一个地连接起来 下面代码片段的结果是 De text
  • 正则表达式将数字与逗号和点匹配

    我想使用匹配整数和浮点数re模块 因此 如果有人键入以下输入类型之一 它应该验证它是否是一个数字 1000 1 000 1 000 1 000 98 1 000 1 0 1 0000 现在我正在使用以下内容 0 9 任何帮助表示赞赏 对于给
  • 将 JSON 反序列化为对象

    我正在将 JSON 字符串反序列化为对象 我无法使用Dictionary
  • 是否可以为基于 Click 的界面中的所有子命令添加全局参数?

    我正在 virtualenv 下使用 Click 并使用entry pointsetuptools 中的指令将根映射到名为调度的函数 我的工具公开了两个子命令serve and config 我在顶级组上使用一个选项来确保用户始终通过 pa
  • 使用 useState hook 时 React 组件渲染两次

    我无法理解为什么我的应用程序反应组件渲染两次 如下面的 gif 所示 我在返回组件之前插入了一个 console log 以查看组件渲染了多少次 每当我删除 useState 挂钩时 我的应用程序就会像我想象的那样只渲染一次 欢迎任何关于为
  • 如何在Svelte中直接挂载HTMLElement?

    我正在使用一些返回 HTML 元素的外部代码 最好嵌入它 而无需通过 JavaScript 管理加载和所有内容 即appendChild removeChild 现在我正在使用 html element outerHTML 但这似乎不太优雅
  • 如何获取我的应用程序的任务列表及其活动堆栈?

    为了更好地理解活动 任务 每个任务的后台堆栈以及不同的启动模式之间的关系 我想编写一个包含大约 7 个活动的应用程序 在 3 个任务中运行 其中活动以不同的启动模式启动 并且我正在运行 我想显示每个活动的堆栈 并在我浏览应用程序并启动或关闭
  • Python 的 Vim 自动完成

    我正在尝试将自动完成功能合并到Vim http en wikipedia org wiki Vim 28text editor 29 我使用了 Vim 的全能补全功能皮迪克申 http www vim org scripts script
  • 从 R 中的向量创建频率计数[重复]

    这个问题在这里已经有答案了 假设有一个向量 其数值可能有重复值 x lt c 1 2 3 4 5 1 2 2 3 我想创建另一个计数向量 如下所示 它的长度与x 对于每个唯一值x 第一次出现为1 第二次出现为2 以此类推 我想要的新向量是
  • 是否可以使用 bash 在 for 循环中访问多个数组

    我正在尝试编写一个 bash 脚本 让我使用curl 下载多个网页 对于每个网页 我希望能够传递卷曲页面和引用链接 我希望能够同时提供多个网页 换句话说 我希望能够循环浏览我提供脚本的网页 并且对于每个页面 将关联的网页和引用链接传递给cu
  • 在 ECR 中标记多平台图像会创建未标记的清单

    我开始使用 docker buildx 来标记多平台映像并将其推送到 ECR 但是 ECR 似乎将标签应用于父清单 并将每个相关清单保留为未加标签 ECR 似乎确实可以防止删除子清单 但它使管理孤立的未标记图像的清理变得复杂 有没有办法以某
  • Django:重复的键值违反了唯一约束

    我有一个笑话模型 class Joke models Model date created models DateTimeField default datetime now blank True date modified models
  • python 中使用 pop()、list[-1] 和 += 时求值的顺序是什么?

    a 1 2 3 a 1 a pop 这导致 1 6 a 1 2 3 a 0 a pop 这导致 4 2 这两个结果的评估顺序是什么 首先是右侧 然后是左侧 并且在任何一侧 评估顺序都是从左到右 a 1 a pop 与a 1 a 1 a po
  • 各种 MSBuild 版本属性(例如 Version、VersionPrefix 和 VersionSuffix)之间有什么区别?

    使用 MSBuild 15 和 Microsoft NET Sdk 构建项目允许用户指定六个版本属性 它们之间有什么区别以及它们的正确使用方法是什么 Version 版本前缀 版本后缀 汇编版本 文件版本 封装版本 需要明确的是 我所说的
  • 在netbeans中向jpanel添加组件

    在过去的几个小时里 我一直在尝试弄清楚如何向窗口添加标签组件 但没有成功 我在 Netbeans 中创建了一个新的桌面应用程序项目 它附带了预先生成的代码 我想为其添加标签 但它就是不显示 我不确定为什么 因为我遵循正常的 panel ad
  • 如何修复此 ArrayAdapter 要求资源 ID 为 TextView

    我是 android 新手 我正在尝试使用 json 开发带有 gridview 和 listview 的应用程序 通过 json 我在 gridview 中显示了一组图像 并根据 gridview 的位置 我在下一页列表视图中显示结果 这