I have an issue which I can't seem to solve. I have a ListView, this ListView contains an object (IndividualRow). this IndividualRow has 3 values which are displayed in textviews and in a switch. These IndividualRows are stored in an ArrayList, but then I got stuck.
I want to press on 1 of the TextViews (which is displaying a temperature), when I press it, it should automatically add 1.
Now the problem is that I don't know how to implement this. I tried several things but I cound't figure it out. I don't specifically want code, but I'd like to know what I should do, so I'll not copy past and don't learn from it. This is my code so far.
(I have a custom adapter so that the ListView displays my rows accordingly, i can include it here if you want)
list_item.xml (this is how a row looks like)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:paddingTop="14dp"
android:paddingBottom="14dp" >
<Switch
android:id="@+id/switch1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:height="30dp"
android:textSize="22sp"
android:textOff="@string/Off"
android:textOn="@string/On"
android:paddingLeft="30dp" />
<TextView
android:id="@+id/tijd"
android:textSize="22sp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="right"
android:clickable="true"/>
<TextView
android:id="@+id/temperatuur"
android:textSize="22sp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="right"
android:clickable="true"/>
<TextView
android:layout_width="wrap_content"
android:textSize="22sp"
android:layout_height="wrap_content"
android:text="@string/GradenCelcius"
android:paddingRight="10dp" />
</LinearLayout>
This is the IndividualRow code
//holds values for each individual row
public class IndividualRow {
//instance variables
private String tijd;
private int temperatuur;
private boolean onoroff2;
//constructor > what an individual row needs to be an individual row
public IndividualRow(String data1,int data2, boolean onoroff){
tijd = data1;
temperatuur = data2;
onoroff2 = onoroff;
}
//sends value of tijd
public String getString1(){
return tijd;
}
//sends value of temperatuur
public String getString2(){
String x = Integer.toString(temperatuur);
return x;
}
//sends value of switch state, so on or off (on = true, off = false)
public boolean getBoolean() {
return onoroff2;
}
//probably should add setString1 and so on here right?
}
And than here is my fragment which should operate it all
public class SettingTimeFragment extends Fragment{
//Instance Variables
private List<IndividualRow> items = new ArrayList<IndividualRow>();
private CustomAdapter adapter;
private ListView rowListView;
private String tijd = "0:00";
private int temperatuur = 15;
private boolean onoroff = true;
//creates the SettingTimeFragment
public static final SettingTimeFragment newInstance(){
SettingTimeFragment f = new SettingTimeFragment();
return f;
}
//providing it's layout
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.setting_time_fragment, container, false);
}
//creates the content of SettingTimeFragment
@Override
public void onActivityCreated(Bundle savedInstanceState) {
setHasOptionsMenu(true);
super.onActivityCreated(savedInstanceState);
items.add(new IndividualRow(tijd, temperatuur, onoroff));// add initial row
adapter = new CustomAdapter(getActivity().getApplicationContext(),R.layout.list_item, items); // create new CustomAdapter
rowListView=(ListView)getActivity().findViewById(R.id.rowListView); // find rowListView
rowListView.setAdapter(adapter); //attach adapter to rowListView
}
//creates menu on top of the screen
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
{
inflater.inflate(R.menu.setting_time_fragment_menu, menu);
}
//finds each individual button in menu and handles click events
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case R.id.additionbutton:
addRow(new IndividualRow(tijd, temperatuur, onoroff));
return true;
default:
return super.onOptionsItemSelected(item);
}
}
//adds a new IndividualRow
public void addRow(IndividualRow newRow) {
items.add(newRow);
adapter.notifyDataSetChanged(); //updates adapter that there is new information to display
}
}