Java 如何在RecyclerView中设置itemCounter,并在数字较大时每次更改计数器的颜色?
第一次使用RecyclerView和ListView时,我使用了以下代码ListView.getCount;,但对于RecyclerView来说,我不知道如何让它工作 关于在数字变大时更改文本颜色,例如:1,2,3,我想知道是否每次数字变大时都可以更改颜色 这是我的密码:Java 如何在RecyclerView中设置itemCounter,并在数字较大时每次更改计数器的颜色?,java,android,Java,Android,第一次使用RecyclerView和ListView时,我使用了以下代码ListView.getCount;,但对于RecyclerView来说,我不知道如何让它工作 关于在数字变大时更改文本颜色,例如:1,2,3,我想知道是否每次数字变大时都可以更改颜色 这是我的密码: public class MainActivity extends BaseActivity { //int containing the duration of the animation run when
public class MainActivity extends BaseActivity {
//int containing the duration of the animation run when items are added or removed from the RecyclerView
public static final int ANIMATION_DURATION = 2000;
//edit text letting the user type item name to be added to the recylcerview
private EditText mInput;
//itemcounter for recyclerview
private TextView mItemCounter;
//recyclerview showing all items added by the user
private RecyclerView mRecyclerView;
private AdapterRecyclerAnimators mAdapter;
ArrayList<String> mListData = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initViews();
if(savedInstanceState != null){
ArrayList<String> items = savedInstanceState.getStringArrayList("items");
mListData.addAll(items);
mAdapter.notifyDataSetChanged();
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putStringArrayList("items", mListData);
}
private void initViews(){
mInput = (EditText) findViewById(R.id.text_input);
mRecyclerView = (RecyclerView) findViewById(R.id.recyclerAnimatedItems);
mItemCounter = (TextView) findViewById(R.id.itemCounter);
mItemCounter.setText(String.valueOf(mRecyclerView.getChildCount()));
mAdapter = new AdapterRecyclerAnimators(this);
//set an animator on the RecyclerView that works only when items are added or removed
mRecyclerView.setItemAnimator(new SlideInLeftAnimator());
mRecyclerView.getItemAnimator().setAddDuration(ANIMATION_DURATION);
mRecyclerView.getItemAnimator().setRemoveDuration(ANIMATION_DURATION);
mAdapter.addAll(DBHelper.getConnection(MainActivity.this).getAllItems());
mRecyclerView.setAdapter(mAdapter);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
}
public void addItem(View view) {
//check if the EditText has valid contents
if (Util.hasValidContents(mInput)) {
DBHelper.getConnection(MainActivity.this)
.saveItem(mInput.getText().toString());
ArrayList<String> allItems = DBHelper.getConnection(MainActivity.this).getAllItems();
mAdapter.addAll(allItems);
mInput.setText("");
}
}
@Override
protected int getLayoutResourceId() {
return R.layout.activity_main;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
您可以将颜色更改代码移动到RecyclerView适配器的onBindViewHolder方法中。这样,您就可以轻松访问数据长度。如果我理解正确,您只需要替换listview.getCount
与其尝试从RecyclerView获取计数,不如使用mAdapter.getCount我已更改为此mItemCounter.setTextString.valueOfAdapter.getItemCount;现在我得到的是NullPointerException。因为mAdapter是在您提到的语句move mItemCounter.setTextString.valueOfAdapter.getItemCount之后定义的;作为initViews中的最后一条语句