android - AppCompatActivity中如何实现ListView?

标签 android listview

public class MainActivity extends AppCompatActivity {

   protected List<ParseObject> mStatus;

   @Override
   protected void onCreate(Bundle savedInstanceState) {

   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
   Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
   setSupportActionBar(toolbar);

   ParseUser currentUser = ParseUser.getCurrentUser();

   if (currentUser != null){
       //show user the homepage
       ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("Status");
       query.findInBackground(new FindCallback<ParseObject>() {
       @Override
       public void done(List<ParseObject> status, ParseException e) {
       if (e==null){
           //success
           mStatus = status;

            StatusAdapter adapter = new StatusAdapter(getListView().getContext(), mStatus);
            setListAdapter(adapter);
        } else {
        //ther was a problem.
        }
      }
    });

    } else {
        //show login screen
        Intent takeUserToLogin = new Intent(this, LoginActivity.class);
        startActivity(takeUserToLogin);
    }
}

在上面的代码中,我在 getListView()setListAdapter 上遇到了错误。

我在 StatusAdapter 类中有以下代码:

public class StatusAdapter extends ArrayAdapter<ParseObject> {

    protected Context mContext;
    protected List<ParseObject> mStatus;

    public StatusAdapter(Context context, List<ParseObject> status){
        super(context, R.layout.homepagecustomlayout, status);
        mContext = context;
        mStatus = status;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent){
        ViewHolder holder;

        if(convertView == null){
            convertView = LayoutInflater.from(mContext).inflate(
                    R.layout.homepagecustomlayout,null);
            holder = new ViewHolder();
            holder.usernameHomepage = (TextView)convertView.findViewById(R.id.usernameHP);
            holder.statusHomepage = (TextView)convertView.findViewById(R.id.statusHP);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        ParseObject statusObject = mStatus.get(position);

        //user
        String username = statusObject.getString("user");
        holder.usernameHomepage.setText(username);

        //status
        String status = statusObject.getString("newStatus");
        holder.statusHomepage.setText(status);

        return convertView;
    }

    public static class ViewHolder{
        TextView usernameHomepage;
        TextView statusHomepage;
    }
}

我正在关注 this tutorial .

最佳答案

getListView()setListAdapter()ListActivity/ListFragment 的方法。

但是,您似乎正在扩展 AppCompatActivity。因此,您可以将 listView 添加到您的 activity_main;然后:

ListView listview = findViewById(R.id.yourlistID); 

您以此方式设置适配器 - listView.setAdapter();

希望这对您有所帮助!

关于android - AppCompatActivity中如何实现ListView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33634790/

相关文章:

listview - 反转ListView而不从底部填充ListView

listview - 如何在 JavaFX 中隐藏 ListView 的水平滚动条

java - 单击按钮时不重复 Java 中的单词 - Android 应用程序

android - 我应该同时填写浏览器 key 和安卓 key 吗?

javascript - 在 php 中使用 google firebase 上的多播 ID 跟踪消息报告

Android:关于listview的item颜色

android - 增加android中 ListView 中项目之间的间距

android - 我想创建一个收件箱以从自定义收件箱中检索所有短信并显示在我的应用程序中?我不明白从哪里开始编码?

android - 这是 Android 设备上 "flickering issue on scrolling"的解决方案

android - 与 getListAdapter Android 有并发症?