Increment/Decrement Counter in Item of ListView
probably a relatively easy question but I'm a beginner, couldn't find an answer in here and wasn't able to figure out a solution myself.
I have a ListView that is populated by views a simple LinearLayout consisting of a name TextView, a quantity TextView and two buttons (-/+) that shall increment/decrement the quantity TextView.
onItemClickListener couldn't help me because I didn't want to listen to clicks on the Layout as a whole but on clicks on the increment/decrement buttons.
So I guess I have to set the OnClickLIsteners in the getView method of the adapter class like this:
@Override
public View getView(int i, View view, ViewGroup parent){
if(view==null){
view = LayoutInflater.from(context).inflate(R.layout.recipe_list_item, listView, false);
}
//just the ordinary adapter
Button increase=view.findViewById(R.id.increase);
Button decrease=view.findViewById(R.id.decrease);
increase.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
//increment logic
}});
decrease.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
//decrement logic
}
}});
return view;
}
I tried different approaches (like a GlobalUser class or notifyDataSetChanged from within getView) and it worked to some extent. At best I was able to change to quantity TextView but it only wouldn't go any higher than 2.
What I'm looking for is a proper and clean way to this. Thanks in advance!
Oh, and this is my LinearLayout:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Recipe Name"
android:id="@+id/name_tv"
android:layout_weight="2"
android:textSize="20sp"
android:layout_gravity="center"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_weight="1">
<Button
android:layout_width="30dp"
android:layout_height="wrap_content"
android:text="-"
android:id="@+id/decrease"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:layout_margin="5dp"
android:id="@+id/quantity_tv"/>
<Button
android:layout_width="30dp"
android:layout_height="wrap_content"
android:text="+"
android:id="@+id/increase"/>
</LinearLayout>
java android xml listview getview
add a comment |
probably a relatively easy question but I'm a beginner, couldn't find an answer in here and wasn't able to figure out a solution myself.
I have a ListView that is populated by views a simple LinearLayout consisting of a name TextView, a quantity TextView and two buttons (-/+) that shall increment/decrement the quantity TextView.
onItemClickListener couldn't help me because I didn't want to listen to clicks on the Layout as a whole but on clicks on the increment/decrement buttons.
So I guess I have to set the OnClickLIsteners in the getView method of the adapter class like this:
@Override
public View getView(int i, View view, ViewGroup parent){
if(view==null){
view = LayoutInflater.from(context).inflate(R.layout.recipe_list_item, listView, false);
}
//just the ordinary adapter
Button increase=view.findViewById(R.id.increase);
Button decrease=view.findViewById(R.id.decrease);
increase.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
//increment logic
}});
decrease.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
//decrement logic
}
}});
return view;
}
I tried different approaches (like a GlobalUser class or notifyDataSetChanged from within getView) and it worked to some extent. At best I was able to change to quantity TextView but it only wouldn't go any higher than 2.
What I'm looking for is a proper and clean way to this. Thanks in advance!
Oh, and this is my LinearLayout:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Recipe Name"
android:id="@+id/name_tv"
android:layout_weight="2"
android:textSize="20sp"
android:layout_gravity="center"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_weight="1">
<Button
android:layout_width="30dp"
android:layout_height="wrap_content"
android:text="-"
android:id="@+id/decrease"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:layout_margin="5dp"
android:id="@+id/quantity_tv"/>
<Button
android:layout_width="30dp"
android:layout_height="wrap_content"
android:text="+"
android:id="@+id/increase"/>
</LinearLayout>
java android xml listview getview
I have a sample in ExpandableListView here: stackoverflow.com/questions/50092400/… Take a look of getChildView() of that adapter, hope that helps!
– I_A_Mok
Jan 19 at 15:28
add a comment |
probably a relatively easy question but I'm a beginner, couldn't find an answer in here and wasn't able to figure out a solution myself.
I have a ListView that is populated by views a simple LinearLayout consisting of a name TextView, a quantity TextView and two buttons (-/+) that shall increment/decrement the quantity TextView.
onItemClickListener couldn't help me because I didn't want to listen to clicks on the Layout as a whole but on clicks on the increment/decrement buttons.
So I guess I have to set the OnClickLIsteners in the getView method of the adapter class like this:
@Override
public View getView(int i, View view, ViewGroup parent){
if(view==null){
view = LayoutInflater.from(context).inflate(R.layout.recipe_list_item, listView, false);
}
//just the ordinary adapter
Button increase=view.findViewById(R.id.increase);
Button decrease=view.findViewById(R.id.decrease);
increase.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
//increment logic
}});
decrease.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
//decrement logic
}
}});
return view;
}
I tried different approaches (like a GlobalUser class or notifyDataSetChanged from within getView) and it worked to some extent. At best I was able to change to quantity TextView but it only wouldn't go any higher than 2.
What I'm looking for is a proper and clean way to this. Thanks in advance!
Oh, and this is my LinearLayout:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Recipe Name"
android:id="@+id/name_tv"
android:layout_weight="2"
android:textSize="20sp"
android:layout_gravity="center"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_weight="1">
<Button
android:layout_width="30dp"
android:layout_height="wrap_content"
android:text="-"
android:id="@+id/decrease"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:layout_margin="5dp"
android:id="@+id/quantity_tv"/>
<Button
android:layout_width="30dp"
android:layout_height="wrap_content"
android:text="+"
android:id="@+id/increase"/>
</LinearLayout>
java android xml listview getview
probably a relatively easy question but I'm a beginner, couldn't find an answer in here and wasn't able to figure out a solution myself.
I have a ListView that is populated by views a simple LinearLayout consisting of a name TextView, a quantity TextView and two buttons (-/+) that shall increment/decrement the quantity TextView.
onItemClickListener couldn't help me because I didn't want to listen to clicks on the Layout as a whole but on clicks on the increment/decrement buttons.
So I guess I have to set the OnClickLIsteners in the getView method of the adapter class like this:
@Override
public View getView(int i, View view, ViewGroup parent){
if(view==null){
view = LayoutInflater.from(context).inflate(R.layout.recipe_list_item, listView, false);
}
//just the ordinary adapter
Button increase=view.findViewById(R.id.increase);
Button decrease=view.findViewById(R.id.decrease);
increase.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
//increment logic
}});
decrease.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
//decrement logic
}
}});
return view;
}
I tried different approaches (like a GlobalUser class or notifyDataSetChanged from within getView) and it worked to some extent. At best I was able to change to quantity TextView but it only wouldn't go any higher than 2.
What I'm looking for is a proper and clean way to this. Thanks in advance!
Oh, and this is my LinearLayout:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Recipe Name"
android:id="@+id/name_tv"
android:layout_weight="2"
android:textSize="20sp"
android:layout_gravity="center"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_weight="1">
<Button
android:layout_width="30dp"
android:layout_height="wrap_content"
android:text="-"
android:id="@+id/decrease"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:layout_margin="5dp"
android:id="@+id/quantity_tv"/>
<Button
android:layout_width="30dp"
android:layout_height="wrap_content"
android:text="+"
android:id="@+id/increase"/>
</LinearLayout>
java android xml listview getview
java android xml listview getview
edited Jan 19 at 14:05
Radesh
3,64911433
3,64911433
asked Jan 19 at 14:02
André FrankAndré Frank
144
144
I have a sample in ExpandableListView here: stackoverflow.com/questions/50092400/… Take a look of getChildView() of that adapter, hope that helps!
– I_A_Mok
Jan 19 at 15:28
add a comment |
I have a sample in ExpandableListView here: stackoverflow.com/questions/50092400/… Take a look of getChildView() of that adapter, hope that helps!
– I_A_Mok
Jan 19 at 15:28
I have a sample in ExpandableListView here: stackoverflow.com/questions/50092400/… Take a look of getChildView() of that adapter, hope that helps!
– I_A_Mok
Jan 19 at 15:28
I have a sample in ExpandableListView here: stackoverflow.com/questions/50092400/… Take a look of getChildView() of that adapter, hope that helps!
– I_A_Mok
Jan 19 at 15:28
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54267880%2fincrement-decrement-counter-in-item-of-listview%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54267880%2fincrement-decrement-counter-in-item-of-listview%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
I have a sample in ExpandableListView here: stackoverflow.com/questions/50092400/… Take a look of getChildView() of that adapter, hope that helps!
– I_A_Mok
Jan 19 at 15:28