2015-04-02 19 views
-2

我想設置一個文本textView但對象本身是空的,即使我已經在xml中定義id屬性..我得到的價值是設置爲textView,但textView對象本身爲空。TextView對象是空的事件雖然有一個ID參考

活動:

public class ItemActivity extends Activity { 
    ListView lv; 
    Context context; 
    ArrayList prgmName; 
    String dateStr=null; 
     @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     final boolean customTitleSupported = 
       requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 
     requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 

     setContentView(R.layout.itemlist); 
     if(customTitleSupported){ 
       getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.item); 
     } 
     final TextView myTitleText = (TextView) findViewById(R.id.showRoomTextView); 
     final TextView textViewStyle = (TextView) findViewById(R.id.textViewStyle); 

     ArrayList<InvoiceData> invoiceList = (ArrayList<InvoiceData>) getIntent().getSerializableExtra("invoiceList"); 
     for(int i=0;i<invoiceList.size();i++){ 
      if (myTitleText != null) { 
       myTitleText.setText(invoiceList.get(i).getCompl_Name()); 
      } 

      String prdNo=invoiceList.get(i).getPrd_No(); 
      if(prdNo!=null) { 
       System.out.println("no..." + invoiceList.get(i).getPrd_No()+""+textViewStyle); 
       textViewStyle.setText(invoiceList.get(i).getPrd_No()); 
      } 

     } 
     context=this; 
     lv=(ListView) findViewById(R.id.listView); 
     lv.setAdapter(new CustomAdapter(this,params.....)); 
    } 

和適配器類是:

public class CustomAdapter extends BaseAdapter{ 
    String [] result; 
    String [] result1; 
    String [] result2; 
    String [] result3; 
    String [] result4; 
    Context context; 
    int [] imageId; 
    private static LayoutInflater inflater=null; 
    public CustomAdapter(ItemActivity mainActivity, String[] prgmNameList,String[] prgmNameList1,String[] prgmNameList2,String[] prgmNameList3,String[] prgmNameList4) { 
     // TODO Auto-generated constructor stub 

     context=mainActivity; 
     inflater = (LayoutInflater)context. 
       getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 
    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return result.length; 
    } 

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stubb 
     return position; 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 

    public class Holder 
    { 
     TextView tv; 
     TextView tv1; 
     TextView tv2; 
     TextView tv3; 
     TextView tv4; 
    } 
    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     Holder holder=new Holder(); 
     View rowView; 
     rowView = inflater.inflate(R.layout.tabitem, null); 
     rowView.setBackgroundColor(Color.parseColor("#F1F1FF")); 
     rowView.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Toast.makeText(context, "You Clicked "+result[position], Toast.LENGTH_LONG).show(); 
      } 
     }); 
     return rowView; 
    } 

} 

的TabItem的XML是

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" 
    android:layout_weight="1" 
    > 
<LinearLayout 
    android:layout_width="75dp" 
    android:layout_height="wrap_content" android:orientation="vertical"> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_gravity="center" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:textSize="10dp" 
     android:textColor="#000000" 
     android:text="TextView" /> 

    <TextView 
     android:id="@+id/textViewStyle" 
     android:layout_gravity="center" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:textSize="10dp" 
     android:textColor="#000000" 
     /> 

</LinearLayout> 

我正在嘗試設置textViewStyle的活動。

+1

做u得到任何錯誤?如果是的話發佈錯誤日誌。 – Manikandan 2015-04-02 11:55:14

+0

上面的xml代碼是'itemlist'或'item'佈局 – Bharatesh 2015-04-02 12:03:31

+0

引起的:java.lang.NullPointerException:試圖調用虛函數'void android.widget.TextView.setText(java.lang.CharSequence)'null對象參考 – jenil 2015-04-02 12:03:36

回答

2

如果你想訪問你的列表中的TextView,你不能訪問它在你的活動,但你可以在你的適配器:

@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    // ... 
    TextView textviewToModify = rowView.findViewById(R.id.textViewStyle); 
    return rowView; 
} 

你也應該看到ViewHolder模式有更好的PERF。 http://developer.android.com/training/improving-layouts/smooth-scrolling.html

+0

我試過,但無法找到findViewById – jenil 2015-04-02 12:11:25

+0

這是什麼rowView? – jenil 2015-04-02 12:13:54

+0

TextView textviewToModify =(TextView)convertView.findViewById(R.id.textViewStyle); 將工作..,現在我需要將數據從活動傳遞到適配器...謝謝 – jenil 2015-04-02 12:16:11

1

嘗試使用此:

@Override 
      public View getView(int position, View view, ViewGroup parent) {      
       if (view == null) { 
        LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
        view = vi.inflate(R.layout.custom_remarks, null); 

        textViewStyle= (TextView) view.findViewById(R.id.textViewStyle); 
        textViewStyle.setText("TextViewStyle"); 
       } 

      return view; 
     } 
+0

我對這個問題有負面評論..,請投票了:( – jenil 2015-04-02 12:26:25