如何模拟AppCompatActivity和ListActivity扩展行为

时间:2016-03-10 13:55:16

标签: java android inheritance extend

Hello Guys我正在寻找使用AppCompatActivity,因为它正在寻找api 8和ListActivity的向下兼容性接口,因为我正在寻找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 
}

感谢您的支持!!

1 个答案:

答案 0 :(得分:0)

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

ListView继承到AppCompatActivity继承时,只需进行很少的更改即可替换ListView的内置内容。

  1. 您无法再致电this来获取ListView。您需要从视图中获取它。我建议创建这样的方法:

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

    注意:如果列表中没有id的{​​{1}},则需要对其进行更新,但是我建议使用ID list,如果可能的话,它保持一致,表示您可以在多个Activity上使用此方法。

  2. 您不能再覆盖list方法,因为它不存在于onListItemClick上,因此您需要创建自己的侦听器并将其设置为{{ 1}},并将其添加到您的AppCompatActivity中。这是一个示例:

    setOnItemClickListerner
  3. 您无法再在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); } ) } ); 。相反,您将需要获取ListView并调用this.setListAdapter,如下所示:

    populateListView

应该这样做。您可能还需要对设置进行一些其他调整,但这些调整很大。