Hallo Tweakers,
Ik wil graag een lijst in een fragment in mijn app. Nu wil ik in elke rij een TextView die ik kan veranderen met een picker, hiervoor heb ik dus een variabele String nodig. Ook wil ik later meerdere TextView's per rij hebben, daarvoor heb ik een custom Adapter gemaakt. Nu heb ik het een en ander gedaan en kom nu op dit uit. Er zitten geen errors in, maar hij sluit af zodra ik de app opstart. Wat is mijn fout en hoe zou ik dit kunnen veranderen?
MainActivity:
SecondFragment.java
second_frag.xml
CustomAdapter.java
rowData.java
Ik wil graag een lijst in een fragment in mijn app. Nu wil ik in elke rij een TextView die ik kan veranderen met een picker, hiervoor heb ik dus een variabele String nodig. Ook wil ik later meerdere TextView's per rij hebben, daarvoor heb ik een custom Adapter gemaakt. Nu heb ik het een en ander gedaan en kom nu op dit uit. Er zitten geen errors in, maar hij sluit af zodra ik de app opstart. Wat is mijn fout en hoe zou ik dit kunnen veranderen?
MainActivity:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
| import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; public class MainActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ViewPager pager = (ViewPager) findViewById(R.id.viewPager); pager.setAdapter(new MyPagerAdapter(getSupportFragmentManager())); } private class MyPagerAdapter extends FragmentPagerAdapter { public MyPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int pos) { switch(pos) { case 0: return FirstFragment.newInstance("FirstFragment, Instance 1"); case 1: return SecondFragment.newInstance("SecondFragment, Instance 1"); default: return FirstFragment.newInstance("FirstFragment, Default"); } } @Override public int getCount() { return 2; } } } |
SecondFragment.java
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
| public class SecondFragment extends ListFragment { @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); rowData Values_data[] = new rowData[] { new rowData("00:00") }; CustomAdapter adapter = new CustomAdapter(getActivity(), R.layout.listview_row, Values_data); setListAdapter(adapter); } @Override public void onCreate(Bundle savedInstanceState) { setHasOptionsMenu(true); super.onCreate(savedInstanceState); } public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.second_fragment, menu); } public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.additionbutton: //Add Actions return true; default: return super.onOptionsItemSelected(item); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.second_frag, container, false); return v; } public static SecondFragment newInstance(String text) { SecondFragment f = new SecondFragment(); Bundle b = new Bundle(); b.putString("msg", text); f.setArguments(b); return f; } } |
second_frag.xml
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
| <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/holo_green_dark" > <ListView android:id="@+id/TimeSet_List" android:layout_width="fill_parent" android:layout_height="wrap_content"> </ListView> </RelativeLayout> |
CustomAdapter.java
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
| import android.app.Activity; import android.support.v4.app.FragmentActivity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.TextView; public class CustomAdapter extends ArrayAdapter<rowData> { FragmentActivity context; int layoutResourceId; rowData data[] = null; static class ViewHolder { TextView tijd; TextView temperatuur; } public CustomAdapter(FragmentActivity activity, int layoutResourceId, rowData[] data) { super(activity, layoutResourceId, data); this.data = data; } @Override public View getView(int position, View convertView, ViewGroup parent) { View row = convertView; ViewHolder holder = null; if(row == null) { LayoutInflater inflater = ((Activity)context).getLayoutInflater(); row = inflater.inflate(layoutResourceId, parent, false); holder = new ViewHolder(); holder.tijd = (TextView)row.findViewById(R.id.tijd); row.setTag(holder); } else { holder = (ViewHolder)row.getTag(); } rowData rowdata = data[position]; holder.tijd.setText(rowdata.tijd); return row; } } |
rowData.java
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| public class rowData { public String tijd; public rowData(){ super(); } public rowData(String tijd) { super(); this.tijd = tijd; } } |