[英]How i can add decrease button to my ListView to decrease numbers?
我想添加一个按钮来减少列表视图中的数字,我不希望数字从零减少到 go。
夜间活动:
public class NightActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_night);
final ArrayList<Word> words = new ArrayList<>();
words.add(new Word("Thing", "another Thing", 1)); // <--- This number I want to decrease it.
words.add(new Word("ThingOne","another ThingOne", 3)); // <--- This number I want to decrease it.
words.add(new Word("ThingTwo", "another ThingTwo", 3)); // <--- This number I want to decrease it.
words.add(new Word("ThingThree", "another ThingThree", 3)); // <--- This number I want to decrease it.
words.add(new Word("ThingFour", "another ThingFour", 1)); // <--- This number I want to decrease it.
WordAdapter adapter = new WordAdapter(this, words);
ListView listView = findViewById(R.id.list);
listView.setAdapter(adapter);
}
}
单词:
public class Word {
private final String name;
private final String extraText;
private final int repetition;
public Word(String name, String extraText, int repetition) {
this.name = name;
this.extraText = extraText;
this.repetition = repetition;
}
public String getName() {
return name;
}
public String getExtraText() {
return extraText;
}
public int getRepetition() {
return repetition;
}
}
字适配器:
public class WordAdapter extends ArrayAdapter<Word> {
public WordAdapter(Activity context, ArrayList<Word> words) {
super(context, 0, words);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View listItemView = convertView;
if (listItemView == null) {
listItemView = LayoutInflater.from(getContext()).inflate(R.layout.list_item, parent, false);
}
Word currentWord = getItem(position);
TextView nameTextView = listItemView.findViewById(R.id.name_text);
nameTextView.setText(currentWord.getname());
TextView extraTextView = listItemView.findViewById(R.id.extra_text);
extraTextView.setText(currentWord.getExtraText());
TextView repetitions = listItemView.findViewById(R.id.number_of_repetitions);
String formattedRepetition = formatRepetition(currentWord.getRepetition());
repetitions.setText(formattedRepetition);
return listItemView;
}
private String formatRepetition(int repetition) {
DecimalFormat repetitionFormat = new DecimalFormat("0");
return repetitionFormat.format(repetition);
}
}
list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="10dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/corner"
android:padding="10dp">
<TextView
android:id="@+id/name_text"
style="@style/nameText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_below="@id/extra_text"
android:gravity="center">
<TextView
android:id="@+id/number_of_repetitions"
style="@style/repetition"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="2"
android:textStyle="bold"/>
<Button
android:id="@+id/button_repetitions"
android:layout_width="90dp"
android:layout_height="50dp"
android:text="button"/>
</LinearLayout>
</RelativeLayout>
</LinearLayout>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="13dp">
<TextView
android:id="@+id/morning"
style="@style/night"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="2"
android:background="@drawable/night_corner"
android:text="@string/category_night" />
<View
android:id="@+id/divider"
android:layout_width="match_parent"
android:layout_height="13dp" />
<TextView
android:id="@+id/evening"
style="@style/day"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="2"
android:background="@drawable/day_corner"
android:text="@string/category_day" />
</LinearLayout>
</ScrollView>
我添加了一个按钮,但我不知道如何激活它,我不知道我将把onClickListener
放在哪里,我是初学者所以请帮助我并感谢您阅读我的代码。
首先,要更改单词的repetition
值,您必须在Word
class 中创建一个repetition
设置器,如下所示:
public class Word {
.....
..... // your code including constructor & getters
.....
public void setRepetition(int repetition)
{
this.repetition = repetition;
}
}
现在,要更改按钮单击的repetition
值,请在WordAdapter.java
onClickListener
如下所示:
public class WordAdapter extends ArrayAdapter<Word> {
.....
..... // your code
.....
@Override
public View getView(int position, View convertView, ViewGroup parent) {
.....
..... // your code
.....
listItemView.btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int current_repetition = currentWord.getRepetition();
if (current_repetition > 0)
currentWord.setRepetition(current_repetition - 1)
listItemView.textView.setText(currentWord.getRepetition())
}
});
return listItemView;
}
}
试试这个,看看它是否有效。
首先,您应该使用 recyclerview 而不是列表视图。 要减少您的数量,您必须将按钮添加到 list_item,并设置点击侦听器
我不清楚你想要什么,但据我所知,当你按下button
时你想要什么,它会将重复中的数字减一。 那么我们将在wordAdaptor
活动中添加一个按钮变量,我们知道,然后我们将执行setOnclickListener
事件,然后我们启动进程的 rest,此代码修改后我添加了一个condition
,如果数字达到零停止
公共 class WordAdapter 扩展 ArrayAdapter {
public WordAdapter(Activity context, ArrayList<Word> words) {
super(context, 0, words);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View listItemView = convertView;
if (listItemView == null) {
listItemView = LayoutInflater.from(getContext()).inflate(R.layout.list_item, parent, false);
}
Word currentWord = getItem(position);
TextView nameTextView = listItemView.findViewById(R.id.name_text);
nameTextView.setText(currentWord.getName());
TextView extraTextView = listItemView.findViewById(R.id.extra_text);
extraTextView.setText(currentWord.getExtraText());
TextView repetitions = listItemView.findViewById(R.id.number_of_repetitions);
String formattedRepetition = formatRepetition(currentWord.getRepetition());
repetitions.setText(formattedRepetition);
Button bRepetitions = listItemView.findViewById(R.id.button_repetitions);
bRepetitions.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int nRepetitions;
String mRepetitions = repetitions.getText().toString();
nRepetitions = Integer.parseInt(mRepetitions);
nRepetitions -= 1;
if (nRepetitions < 0) {
nRepetitions = 0;
Toast.makeText(getContext(), "Can not be less than 0", Toast.LENGTH_SHORT).show();}
repetitions.setText(String.valueOf(nRepetitions));
}
});
return listItemView;
}
private String formatRepetition(int repetition) {
DecimalFormat repetitionFormat = new DecimalFormat("0");
return repetitionFormat.format(repetition);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.