gpt4 book ai didi

java - 如何模拟AppCompatActivity和ListActivity扩展行为

转载 作者:太空宇宙 更新时间:2023-11-04 12:50:04 24 4
gpt4 key购买 nike

大家好,我正在寻找使用 AppCompatActivity,因为它正在寻找 api 8 和 ListActivity 的向下兼容性的接口(interface),因为我正在寻找 ListActivity 的 onListItemClick 重写方法,所以我该怎么做。例如

public class a extends AppCompatActivity {
//I want to use onListItemClick override method of class b with this //instance if you get me
}
public class b extends ListActivity(){
@override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
//some code here
}

感谢您的支持!!

最佳答案

您需要进行的一些关键更改。

从继承 ListView 切换到 AppCompatActivity 时,您需要进行一些更改来替换 ListView 的内置内容。

  1. 您无法再调用 this 来获取 ListView。您需要从 View 中获取它。我建议创建这样的方法:

    protected ListView getListView() { return findViewById( android.R.id.list ); }

    注意:如果您的列表没有 listid,则需要更新它,但我建议尽可能使用 id list,因为它可以保持一致,并且意味着您可以在多个 Activity 上使用此方法。

  2. 您不能再仅重写 onListItemClick 方法,因为 AppCompatActivity 上不存在该方法,因此您需要创建自己的监听器,并使用 setOnItemClickListerner 将其设置到列表,然后将其添加到 onCreate 中。这是一个例子:

    getListView().setOnItemClickListener( new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick( AdapterView<?> parent, View view, int position, long id ) {
    Cursor cursor = (Cursor) getListView().getItemAtPosition( position );

    String itemId = cursor.getString( cursor.getColumnIndex( "id" ) );

    Intent itemActivityIntent = new Intent( view.getContext(), Item.class );

    itemActivityIntent.putExtra( view.getContext().getPackageName() + ".itemId", itemId );

    startActivity( itemActivityIntent);
    } )
    } );
  3. 您无法再在 populateListView 中调用 this.setListAdapter。相反,您需要获取 ListView 并调用 setAdapter,如下所示:

    getListView().setAdapter( adapter );

应该可以了。您可能还需要对您的设置进行一些其他调整,但这些都是重大调整。

关于java - 如何模拟AppCompatActivity和ListActivity扩展行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35918488/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com