Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在listview上创建可单击的项目,我应该选择什么适配器?_Android_Listview - Fatal编程技术网

Android 如何在listview上创建可单击的项目,我应该选择什么适配器?

Android 如何在listview上创建可单击的项目,我应该选择什么适配器?,android,listview,Android,Listview,以下是脚本: public class LecturAct extends ListActivity { private static final String AR_ID = "id_lec"; private static final String AR_LC = "lec_nm"; private static final String AR_CLS = "class"; private static final String EXTRA_DATA = "

以下是脚本:

public class LecturAct extends ListActivity {

    private static final String AR_ID = "id_lec";
    private static final String AR_LC = "lec_nm";
    private static final String AR_CLS = "class";
    private static final String EXTRA_DATA = "idr";
    JSONArray lec = null;
    ArrayList<HashMap<String, String>> lec_list = new ArrayList<HashMap<String, String>>();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_lec);

        Intent quiz = getIntent();
        String id = quiz.getStringExtra(EXTRA_DATA);

        String link_url = "http://xxxx/xxxx.php?id="+id;

        JSONParser jParser = new JSONParser();

        JSONObject json = jParser.gtJson(link_url);

        try {
            lec = json.getJSONArray("lec");

            for(int i = 0; i < lec.length(); i++){
                JSONObject ar =lec.getJSONObject(i);

                String lectid = ar.getString(AR_ID);
                String lecname = ar.getString(AR_LC);
                String class = ar.getString(AR_CLS);

                HashMap<String, String> map = new HashMap<String, String>();

                map.put(AR_ID, lectid);
                map.put(AR_LC, lecname);
                map.put(AR_CLS, class);

                lec_list.add(map);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
        this.adapter_listview();
    }
公共课堂讲师法案扩展了ListActivity{
私有静态最终字符串AR\u ID=“ID\u lec”;
专用静态最终字符串AR_LC=“lec_nm”;
私有静态最终字符串AR_CLS=“class”;
专用静态最终字符串EXTRA_DATA=“idr”;
JSONArray-lec=null;
ArrayList lec_list=新建ArrayList();
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
requestWindowFeature(窗口。功能\u无\u标题);
setContentView(R.layout.activity_-lec);
意图测验=getIntent();
字符串id=quick.getStringExtra(额外数据);
字符串链接\u url=”http://xxxx/xxxx.php?id=“+id;
JSONParser jParser=新的JSONParser();
JSONObject json=jParser.gtJson(链接url);
试一试{
lec=json.getJSONArray(“lec”);
对于(int i=0;i
我尝试在我的listview上创建一个可单击的项目,以下是脚本:

public void adapter_listview() {

        ListAdapter adapter = new SimpleAdapter(this, lec_list,
                R.layout.list_item,
                new String[] { AR_ID, AR_CLS, AR_LC}, new int[] {
                        R.id.title, R.id.content, R.id.code});

        setListAdapter(adapter);
        ListView lv = getListView();
        lv.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
                String cd = ((TextView) view.findViewById(R.id.code)).getText().toString();
                Intent in = new Intent(LecturAct.this, Quis.class);
                in.putExtra(AR_ID, cd);
                startActivity(in);
            }
        });
    }
public void适配器_listview(){
ListAdapter=新的SimpleAdapter(此,lec_列表,
R.layout.list_项目,
新字符串[]{AR_ID,AR_CLS,AR_LC},新int[]{
R.id.title,R.id.content,R.id.code});
setListAdapter(适配器);
ListView lv=getListView();
lv.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
字符串cd=((TextView)view.findviewbyd(R.id.code)).getText().toString();
意向in=新意向(讲师行为、本、奎斯类);
in.putExtra(AR_ID,cd);
星触觉(in);
}
});
}
但是当我点击一个项目时,它会一直把我带到错误的方向,总是把我带到最后一个项目

  • 物理的
  • 生物学
  • 运动
  • 社会的
  • 数学

  • 然后,当我单击生物学或我选择的任何内容时,它总是会将我带到“数学”页面。那么我该怎么办?我是否使用了错误的适配器?请帮助我,给我正确的解决方案:(

    只需覆盖
    受保护的void onListItemClick(ListView l,View v,int position,long id)
    例如
    讲师法案中的

    protected void onListItemClick (ListView l, View v, int position, long id) {
        String cd = getListAdapter().getItem(position);
        Intent in = new Intent(LecturAct.this, Quis.class);
        in.putExtra(AR_ID, cd);
        startActivity(in);
    }
    
    我的例子和你的一样。只需更改对象类型。或字符串

    catalogListView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
    @凌驾
    public void onItemClick(AdapterView父对象、视图、整型位置、长id){
    对象obj=(对象)((字符串)parent.getAdapter().getItem(位置));
    字符串ss=obj.toString();
    Intent i=新的Intent(getActivity(),PdfReader.class);
    i、 putExtra(“catalogPdfUrl”),“”+ss;
    getActivity().startActivity(i);
    }
    });
    
    此答案与阿明的答案类似,但差别不大。示例代码:

    @Override 
    protected void onListItemClick (ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
    
        String mlecture p = (String) l.getItemAtPosition(position);
    ...
        in.putExtra(AR_ID, lecture);
        startActivity(in);
    }
    
    注:

    • 获取列表视图参数(l),并获取要开始的行/项位置
    • 无法使用view.findViewById方法,因为ListView(l)已具有UI对象
    • 由于使用了ListActivity,请使用override onListItemClick

    我仔细查看了您的代码。我怀疑数据排列不正确

    更改为:

    new String[] { AR_ID, AR_CLS, AR_LC},
    new int[] { R.id.title, R.id.content, R.id.code});
    
    致:


    我切换了R.id.code。我认为这与in.putExtra(AR\u id,cd)兼容。因为我不知道quick.class,所以没有好办法确定。

    `String cd=getListAdapter().getItem(position);'我该怎么做?我已经尝试过更改它,但我不明白:(这行
    PDF=(PDF)parent.getAdapter().getItem(position);
    我不知道如何更改它:(PDF是myListItem自定义对象。您的对象是String。String是extend(java lang.Object)相同的版本。我试图更改它:
    String cd=(String)parent.getAdapter().getItem(position)
    但是它仍然会自动选择列表上的最后一项它应该是完整的,我要求您使用@the Original Android answersQuiz.class中提供的工作示例只需检索额外的数据并将其设置为textView我不能使用onListItemClick,红色提示不断告诉我将其更改为OnItemClick我很高兴它现在可以工作您。(我应该早一点回答)实际上,当使用ListActivity时,onItemClick不可用。当您使用Activity时,onItemClick可用。如果是这样,则使用“lv.setOnItemClickListener”。这种框架设计很难将父类从Activity更改为ListActivity。
    new String[] { AR_ID, AR_CLS, AR_LC},
    new int[] { R.id.title, R.id.content, R.id.code});
    
    new String[] { AR_ID, AR_CLS, AR_LC},
    new int[] { R.id.code, R.id.title, R.id.content });