2016-03-23 11 views
0

Zaman ayırdığınız için teşekkür ederiz.Bir BaseAdapter kullanarak yer tutucu verileri ile bir ListView doldurmaya çalışıyorum ve bir parçaya koymak ama bazı nedenlerle uygulama çöküyor bazı nedenlerle

MainActivity

import android.app.FragmentManager; 
import android.app.FragmentTransaction; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.Menu; 
import android.view.MenuItem; 

public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 


    FragmentB fragB = new FragmentB(); 
    FragmentManager fragManager = getFragmentManager(); 
    FragmentTransaction fragTransaction = fragManager.beginTransaction(); 
    fragTransaction.add(R.id.cmll,fragB,"fragB"); 
    fragTransaction.commit(); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 
} 

Benim Fragment

import android.app.Fragment; 
import android.content.Context; 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

public class FragmentB extends Fragment { 

    private Context myContext; 

    @Override 
    public void onAttach(Context context) { 
     myContext=context; 
    } 

    @Nullable 
    @Override 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.fragment_b_layout, container, false); 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     ListView listView = (ListView) getActivity().findViewById(R.id.listView); 
     MyBaseAdapter adapter = new MyBaseAdapter(myContext); 
     listView.setAdapter(adapter); 

    } 

    @Override 
    public void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
    } 

} 

Benim BaseAdapter Sınıf

i henüz Görünüm Tutucu tasarım deseni kullanmaz biliyorum ama çökmesini olmadan hala göstermesi gerekir düşünce .

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 
import java.util.ArrayList; 

public class MyBaseAdapter extends BaseAdapter { 

    private Context myContext; 
    private ArrayList<ListViewInfo> list; 

    public MyBaseAdapter(Context context) { 
     myContext = context; 
     list = new ArrayList<>(); 

     String[] test_10char = {"AaaAaaAaaA","BbbBbbBbbB","CccCccCccC"}; 
     String[] test_3char = {"Aaa","Bbb","Ccc"}; 
     int[] ints = {R.drawable.test_sunny,R.drawable.test_sunny,R.drawable.test_sunny}; 

     for (int i = 0; i < 3; i++) { 
      list.add(new ListViewInfo(test_10char[i], test_3char[i], ints[i])); 
     } 

    } 

    @Override 
    public int getCount() { 
     return list.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return list.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     LayoutInflater inflater = (LayoutInflater) myContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View singleRowView = inflater.inflate(R.layout.list_item_layout,parent,false); 

     TextView date = (TextView) singleRowView.findViewById(R.id.textView1); 
     TextView temp = (TextView) singleRowView.findViewById(R.id.textView2); 
     ImageView icon = (ImageView) singleRowView.findViewById(R.id.imageView1); 

     ListViewInfo tempLVI = list.get(position); 

     date.setText(tempLVI.getDate()); 
     temp.setText(tempLVI.getTemp()); 
     icon.setImageResource(tempLVI.getImageID()); 

     return singleRowView; 
    } 
} 

Hata

03-22 21:42:08.421 4130-4130/com.eli.myweatherapp E/AndroidRuntime: FATAL EXCEPTION: main 
                     Process: com.eli.myweatherapp, PID: 4130 
                     java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference 
                      at com.eli.myweatherapp.MyBaseAdapter.getView(MyBaseAdapter.java:52) 
                      at android.widget.AbsListView.obtainView(AbsListView.java:2387) 
                      at android.widget.ListView.measureHeightOfChildren(ListView.java:1270) 
                      at android.widget.ListView.onMeasure(ListView.java:1182) 
                      at android.view.View.measure(View.java:17485) 
                      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5464) 
                      at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1438) 
                      at android.widget.LinearLayout.measureVertical(LinearLayout.java:724) 
                      at android.widget.LinearLayout.onMeasure(LinearLayout.java:615) 
                      at android.view.View.measure(View.java:17485) 
                      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5464) 
                      at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1438) 
                      at android.widget.LinearLayout.measureVertical(LinearLayout.java:724) 
                      at android.widget.LinearLayout.onMeasure(LinearLayout.java:615) 
                      at android.view.View.measure(View.java:17485) 
                      at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:728) 
                      at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:464) 
                      at android.view.View.measure(View.java:17485) 
                      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5464) 
                      at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:664) 
                      at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:731) 
                      at android.view.View.measure(View.java:17485) 
                      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5464) 
                      at android.widget.FrameLayout.onMeasure(FrameLayout.java:430) 
                      at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135) 
                      at android.view.View.measure(View.java:17485) 
                      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5464) 
                      at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1438) 
                      at android.widget.LinearLayout.measureVertical(LinearLayout.java:724) 
                      at android.widget.LinearLayout.onMeasure(LinearLayout.java:615) 
                      at android.view.View.measure(View.java:17485) 
                      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5464) 
                      at android.widget.FrameLayout.onMeasure(FrameLayout.java:430) 
                      at android.view.View.measure(View.java:17485) 
                      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5464) 
                      at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1438) 
                      at android.widget.LinearLayout.measureVertical(LinearLayout.java:724) 
                      at android.widget.LinearLayout.onMeasure(LinearLayout.java:615) 
                      at android.view.View.measure(View.java:17485) 
                      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5464) 
                      at android.widget.FrameLayout.onMeasure(FrameLayout.java:430) 
                      at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2636) 
                      at android.view.View.measure(View.java:17485) 
                      at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2031) 
                      at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1193) 
                      at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1400) 
                      at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1078) 
                      at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5875) 
                      at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767) 
                      at android.view.Choreographer.doCallbacks(Choreographer.java:580) 
                      at android.view.Choreographer.doFrame(Choreographer.java:550) 
                      at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753) 
                      at android.os.Handler.handleCallback(Handler.java:739) 
                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                      at android.os.Looper.loop(Looper.java:135) 
                      at android.app.ActivityThread.main(ActivityThread.java:5290) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at java.lan 

Log

Bir ListViewInfo de sınıf ama onun sadece üç değişken vardır ve yöntemleri olsun.

Yardımlarınız için şimdiden teşekkür ederiz. Problemin ne olduğu hakkında hiçbir fikrim yok. Context context = parent.getContext();

LayoutInflater inflater = (LayoutInflater) myContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

bunun senin için yararlı olduğunu umuyoruz

LayoutInflater inflater = (LayoutInflater) parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

için: getView arasında

+1

Günlükleri dahil edebilir misiniz? –

+0

Genel olarak android ve programlamaya yeni geliyorum. Bu sizin aradığınız şey: – BusterDublup

+0

03-22 21: 42: 08.421 4130-4130/com.askowitz.eli.myweatherapp E/AndroidRuntime: FATAL ÖZGÜRLÜK: mainProcess: com.askowitz.eli.myweatherapp, PID: 4130 java. lang.NullPointerException: com.askowitz.eli.myweatherapp.MyBaseAdapter.getView (MyBaseAdapter) 'da bir null object reference üzerinde sanal yöntem' java.lang.Object android.content.Context.getSystemService (java.lang.String) 'çağrılmayı deneyin. .java: 52) – BusterDublup

cevap

0

ViewGroup parent argümanlar böyle bağlam bilgisi vardır.

+0

çok teşekkürler. işe yaradı. gerçekten onu takdir ederim. – BusterDublup

İlgili konular