如何在 Android Activity 中的 AppCompatActivity 中扩展 ListActivity

Posted

技术标签:

【中文标题】如何在 Android Activity 中的 AppCompatActivity 中扩展 ListActivity【英文标题】:How to extends ListActivity where AppCompatActivity in Android Activity 【发布时间】:2016-03-23 13:06:46 【问题描述】:

我想为 PullToRefresh 使用 Activity 扩展 ListActivity。但我使用了 CustomActionBar,这就是使用 AppCompatActivity 的原因。如何解决这个问题。感谢高级

public class CustomActionActivity extends ListActivity

public class PullToRefreshActivity extends ListActivity 
    private LinkedList<String> mListItems;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.pull_to_refresh);

        // Set a listener to be invoked when the list should be refreshed.
        ((PullToRefreshListView) getListView()).setOnRefreshListener(new PullToRefreshListView.OnRefreshListener() 
            @Override
            public void onRefresh() 
                // Do work to refresh the list here.
                new GetDataTask().execute();
            
        );

        mListItems = new LinkedList<String>();
        mListItems.addAll(Arrays.asList(mStrings));

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, mListItems);

        setListAdapter(adapter);
    

而不是这个:

public class CustomActionActivity extends AppCompatActivity

【问题讨论】:

很抱歉,我无法理解这个问题。你能澄清一下吗? 在我的活动中,PullToRefresh 无法正常工作,因此我想使用 ListActivity。看到我用 PullToRefreshActivity 编辑了我的帖子。 考虑使用 RecyclerView。这是最新的 api developer.android.com/reference/android/support/v7/widget/… 【参考方案1】:

如果你想在你的应用中使用 ListView,那么直接使用它而不扩展 ListActivity。像这样

public class PullToRefreshActivity extends AppCompatActivity 
private LinkedList<String> mListItems;
PullToRefreshListView listView;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.pull_to_refresh);
    listView = (PullToRefreshListView) findViewById(R.id.list_view); 
    // Set a listener to be invoked when the list should be refreshed.
    listView.setOnRefreshListener(new PullToRefreshListView.OnRefreshListener() 
        @Override
        public void onRefresh() 
            // Do work to refresh the list here.
            new GetDataTask().execute();
        
    );

    mListItems = new LinkedList<String>();
    mListItems.addAll(Arrays.asList(mStrings));

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, mListItems);

    listView.setAdapter(adapter);

【讨论】:

【参考方案2】:

根据 Java 文档 https://docs.oracle.com/javase/tutorial/java/IandI/multipleinheritance.html,我们不能继承多个类。所以,如果你想要这两种功能,那么在你的布局中使用ListView

【讨论】:

以上是关于如何在 Android Activity 中的 AppCompatActivity 中扩展 ListActivity的主要内容,如果未能解决你的问题,请参考以下文章

Android——Activity中的六个主要函数

Android如何不让Activity销毁

Android 如何从 Main Activity 中的另一个类调用 Activity 数据类型?

如何在 Android Activity 中的 AppCompatActivity 中扩展 ListActivity

Android开发之Activity的创建跳转及传值

如何从android中的非Activity类调用服务方法