Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[Java-Android] ListFragment probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
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:
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;
    }

}

  • Snobbieh
  • Registratie: Juli 2009
  • Laatst online: 22-11 13:01
Ik denk dat het wel eens een NullPointerException kan zijn op je CustomAdapter.
Je geeft wel een context door maar je stelt je globale var er niet aan gelijk.

En probeer ook eens gebruik te maken van Logcat, toont mooi je errors...

I7 2600K - 8GB - M550 256GB - GTX 670


Verwijderd

Topicstarter
Ik heb met Logcat gekeken wat hij nog wel en wat niet meer startte.
Het blijkt mis te gaan bij OnActivityCreated()

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Stel eens in in je editor dat hij automatisch een breakpoint zet op een exception, dan zie je zonder te raden waar het fout gaat. Hier kun je niks mee, en wij al helemaal niet.

Lees ook De Quickstart even door en pas je topicstart aan met meer informatie (en laat overbodige info weg) want met "hij doettutnie!" en ruim 180 regels gedumpte code kunnen we écht niks.

[ Voor 6% gewijzigd door NMe op 11-10-2013 02:42 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.