2014-06-08 4 views
1

TableLayout에 데이터베이스를 통해 이력서가 채워진 행이 있습니다. 각 행에서 OnLongClickListener()ListView과 다른 .xml에서 내 activity_product.xml으로 표시하려고합니다. 여기 내 activity_product.xml에서 코드의 관련 부분입니다 :목록보기가 팽창 할 때 표시되지 않습니다.

<TableLayout 
    android:id="@+id/productsTable" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:paddingLeft="3dip" 
    android:paddingRight="3dip" 
    android:shrinkColumns="1" 
    android:weightSum="1" 
    android:stretchColumns="*"> 
</TableLayout> 

는 그리고 여기 ListView

<?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="vertical" > 

    <ListView 
     android:id="@+id/edirOrDeleteMenu" 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent"> 
    </ListView> 
</LinearLayout> 

edit_or_delete_menu.xml입니다 그리고 여기가 행과 시도를 채우는 데 사용하는 코드의 관련 부분입니다 보여 ListView :

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_product); 
    new LoadProductsTableContent().execute(); 
} 

private class LoadProductsTableContent extends AsyncTask<Void, Void, Integer> { 
    private TableLayout productsTable = (TableLayout) findViewById(R.id.productsTable); 
    private TableRow labelRow = (TableRow) findViewById(R.id.productLabelsRow); 

    @Override 
    protected Integer doInBackground(Void... params) 
    { 
     int result=1; 

     // Usado para acessarmos as views da thread pai 
     // http://stackoverflow.com/questions/5161951/android-only-the-original-thread-that-created-a-view-hierarchy-can-touch-its-vi 
     runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 

       // Create a new row to be added 
       TableRow tr = new TableRow(ProductActivity.this); 
       /* CODE TO SET ROW PROPERTIES AND CONTENT */ 

       // Row click listener 
       tr.setOnLongClickListener(new OnLongClickListener() { 
        @Override 
        public boolean onLongClick(View v) { 
         // TODO Auto-generated method stub 
         onClickRow(v); 
         return false; 
        } 
       }); 

       // Add row to TableLayout 
       productsTable.addView(tr); 

      } 
     }); 

     return result; 
    } 

    private void onClickRow(View v) { 
     String editText = getResources().getString(R.string.menuEditOption); 
     String deleteText = getResources().getString(R.string.menuDeleteOption); 

     // Inflating to display ListView 
     LayoutInflater inflater = (LayoutInflater) ProductActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     v = inflater.inflate(R.layout.edir_or_delete_menu, null); 
     edirOrDeleteMenu = (ListView) v.findViewById(R.id.edirOrDeleteMenu);    
     String[] options = new String[]{editText, deleteText}; 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(ProductActivity.this, android.R.layout.simple_list_item_1, android.R.id.text1, options);    
     edirOrDeleteMenu.setAdapter(adapter); 


    } 

코드는 컴파일하고이 코드를 실행할 때 오류가 발생하지 않습니다,하지만 내 문양 tView가 표시되지 않습니다. 내가 여기서 무엇을 놓치고 있니?

미리 감사드립니다. 나는이 문제를 추측

답변

0

은 여기에 있습니다 :

LayoutInflater inflater = (LayoutInflater) ProductActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    v = inflater.inflate(R.layout.edir_or_delete_menu, null); 

당신은보기를 팽창하지만, 어느 곳을 추가하지 않았다. 그것을 부모가되어야하는 뷰에 자식 뷰로 추가하십시오. inflater.inflate(...) 결과를 선언하고 v 대신 다른 변수에 할당해야합니다. v은 클릭 한 뷰입니다. 위에서 작성한 것처럼 새 변수를 만든 다음 하위 변수로 추가하십시오. 다음과 같이 표시됩니다.

LayoutInflater inflater = (LayoutInflater) ProductActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View view = inflater.inflate(R.layout.edir_or_delete_menu, null); 
v.addView(view); 
관련 문제