2016-08-23 132 views
0

enter image description here如何添加多個TextView及其內部已經創建的動態相對佈局?另外,我必須從數據庫sqlite中調用這些文本框的值。在relativeLayout下動態添加TextView

公共類DownloadPackagesActivity延伸活動實現AdapterView.OnItemSelectedListener {

private SQLiteDatabase db; 
DBHelper dbHelper; 
String newFolder = ""; 
int SId = 1; 
TextView subjects; 
List<String> categories = new ArrayList<String>(); 
String FilePart = ""; 

DownloadManager dManager; 
long did; 
// private static String file_url = "http://mobileteacher.in/audio/demo/2725.mp3"; 
String urlString =""; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_download_packages); 
    // Get DownloadManager instance 
    dManager = (DownloadManager) this.getSystemService(Context.DOWNLOAD_SERVICE); 
    subjects = (TextView)findViewById(R.id.subjects); 
    // Spinner element 
    Spinner spinner = (Spinner) findViewById(R.id.spinnerPackage); 
    // Spinner click listener 
    spinner.setOnItemSelectedListener(this); 
    // Add textview 
    dbHelper = new DBHelper(this); 
    try{ 
     dbHelper.createDataBase(); 
    } 
    catch(Exception ex) 
    { 
     ex.printStackTrace(); 
    } 
    String myPath = dbHelper.DB_PATH + DBHelper.DB_NAME; 
    db = SQLiteDatabase.openDatabase(myPath, null, 
      SQLiteDatabase.OPEN_READWRITE); 
    Cursor c = db.rawQuery("select * from DownloadSubject", null); 
    while (c.moveToNext()) { 
     categories.add(c.getString(1)); 
    } 
    ArrayAdapter<String> dataAdapter1 = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice, categories); 
    dataAdapter1.setDropDownViewResource(android.R.layout.simple_list_item_single_choice); 
    spinner.setAdapter(dataAdapter1); 
    showPart(); 
} 
@Override 
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) 
{ 
    SId = position + 1; 
    showPart(); 
} 

@Override 
public void onNothingSelected(AdapterView<?> parent) { 

} 
public void showPart() 
{ 
    int j=1; 
    int ii=0; 
    dbHelper = new DBHelper(this); 
    try{ 
     dbHelper.createDataBase(); 
    } 
    catch(Exception ex) 
    { 
     ex.printStackTrace(); 
    } 
    TableLayout stk = (TableLayout) findViewById(R.id.tbl); 
    stk.removeAllViews(); 
    String myPath = dbHelper.DB_PATH + DBHelper.DB_NAME; 
    db = SQLiteDatabase.openDatabase(myPath, null, 
      SQLiteDatabase.OPEN_READWRITE); 
    Cursor c; 
    if (SId==8 || SId==9) 
    { 
     c = db.rawQuery("select * from DownloadSubject", null); 
    } 
    else 
    { 
     c = db.rawQuery("select * from DownloadSubject where Id = '"+ SId +"'", null); 
    } 
    while (c.moveToNext()) 
    { 
     subjects.clearComposingText(); 


     String[] part = c.getString(2).split(","); 
     for(int i = 0;i<part.length;i++) 
     { 

      TableRow tr1 = new TableRow(this); 
      Button button = new Button(this); 
      button.setBackgroundColor(Color.TRANSPARENT); 
      button.setText(part[i] +"\u00A0 \u00A0 \u00A0 \u00A0 Download"); 
      button.setTextColor(Color.BLUE); 
      button.setPadding(20, 0, 0, 0); 
      button.setOnClickListener(downloads()); 
      button.setId(i); 
      // button.setHint(part[i]); 
      tr1.addView(button); 
      stk.addView(tr1); 
     } 
     stk = (TableLayout) findViewById(R.id.tbl); 
     int N = 1; 
     TextView[] TextViews = new TextView[N]; // create an empty array; 
     // for (int i = 0; i < N; i++) { 
     //if(ii!=0) { 
     // subjects.setText(c.getString(j)); 
     // Toast.makeText(this, c.getString(j), Toast.LENGTH_LONG).show(); 



     // save a reference to the textview for later 
     // TextViews[j] = TextView; 
     //} 
     if(ii==0) 
     { 
      subjects.setText(c.getString(j)); 
      ii=ii+1; 
     } 
     else 
     { 
      final TextView TextView = new TextView(this); 
      TextView.setText(c.getString(j)); 
      TextView.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT, 
        TableLayout.LayoutParams.WRAP_CONTENT)); 
      TextView.setPadding(0, 20, 0, 20); 
      TextView.setTextSize(getResources().getDimension(R.dimen.textsize)); 
      TextView.setTextColor(Color.parseColor("#800080")); 
      // add the textview to the layout 
      stk.addView(TextView); 
     } 

    } 
} 
public String part; 
View.OnClickListener downloads() 
{ 
    return new View.OnClickListener() 
    { 
     public void onClick(View v) { 
      //Button b1 = (Button)v; 
      //int i = b1.getId(); 
      // Toast.makeText(getApplicationContext(),"Ide = " + i,Toast.LENGTH_LONG).show(); 
      part =""; 
      TextView subjects = (TextView)findViewById(R.id.subjects); 
      if(subjects.getText().toString().equals("Modern History (500 MB)")) 
      { 
       part = "modern_history"; 
      } 
      else if(subjects.getText().toString().equals("Polity (250 MB)")) 
      { 
       part = "polity"; 
      } 
      else if(subjects.getText().toString().equals("Economy (100 MB)")) 
      { 
       part = "economy"; 
      } 
      else if(subjects.getText().toString().equals("Ancient History (500 MB)")) 
      { 
       part = "ancient_history"; 
      } 
      else if(subjects.getText().toString().equals("English Grammar (500 MB)")) 
      { 
       part = "english_grammar"; 
      } 
      else if(subjects.getText().toString().equals("Vocabulary (560 MB)")) 
      { 
       part = "vocabulary"; 
      } 
      else if(subjects.getText().toString().equals("Maths (100 MB)")) 
      { 
       part = "maths"; 
      } 
      else if(subjects.getText().toString().equals("One Day Complete(Vol.1(2GB))")) 
      { 
       part = "oneday_complete"; 
      } 
      else if(subjects.getText().toString().equals("Civil Complete (Vol.1 (2GB))")) 
      { 
       part = "civil_complete" ; 
      } 

      newFolder = "/voice"; 
      subjects = (TextView)findViewById(R.id.subjects); 
      String extStorageDirectory = Environment.getExternalStorageDirectory().toString(); 
      File myNewFolder = new File(extStorageDirectory + newFolder); 
      //File f = new File(myNewFolder); 
      myNewFolder.mkdir(); 

      Button b = (Button)v; 
      FilePart = b.getText().toString(); 
      String RemoveSpace = FilePart.split("\u00A0")[0].replace(" ",""); 
      try { 
       urlString = "http://mobileteacher.in/DealerPackage/" + part + "/" + RemoveSpace + ".zip"; 
       downloadFile(); 
       Toast.makeText(getApplicationContext(), "Download Started", Toast.LENGTH_LONG).show(); 
      } 
      catch(Exception e) 
      { 
       Toast.makeText(getApplicationContext(), "Please Connect Internet", Toast.LENGTH_LONG).show(); 
      } 
     } 
    }; 
} 
public void downloadFile() { 
    // String urlString = "http://mobileteacher.in/audio/demo/2725.mp3"; 
    if (!urlString.equals("")) { 
     try { 
      // Get file name from the url 
      String fileName = urlString.substring(urlString.lastIndexOf("/") + 1); 
      // Create Download Request object 
      DownloadManager.Request request = new DownloadManager.Request(Uri.parse((urlString))); 
      // Display download progress and status message in notification bar 
      request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); 
      // Set description to display in notification 
      // request.setDescription("Download " + fileName + " from " + urlString); 
      request.setDescription("Download " + fileName + " from mobileteacher.in"); 
      // Set title 
      request.setTitle("Mobile Teacher"); 
      // Set destination location for the downloaded file 
      request.setDestinationUri(Uri.parse("file://" + Environment.getExternalStorageDirectory() + "/voice/"+fileName.split("\u00A0")[0].replace(" ",""))); 
      // Download the file if the Download manager is ready 
      did = dManager.enqueue(request); 
     } catch (Exception e) { 
     } 
    } 
} 
// BroadcastReceiver to receive intent broadcast by DownloadManager 
private BroadcastReceiver downloadReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context arg0, Intent arg1) { 
     // TODO Auto-generated method stub 
     DownloadManager.Query q = new DownloadManager.Query(); 
     q.setFilterById(did); 
     Cursor cursor = dManager.query(q); 
     if (cursor.moveToFirst()) { 
      String message = ""; 
      int status = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)); 
      if (status == DownloadManager.STATUS_SUCCESSFUL) { 
       message = "Download successful"; 
      } else if (status == DownloadManager.STATUS_FAILED) { 
       message = "Download failed"; 
      } 
      //query.setText(message); 
     } 
    } 
}; 

protected void onResume() { 
    super.onResume(); 
    // Register the receiver to receive an intent when download complete 
    IntentFilter intentFilter = new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE); 
    registerReceiver(downloadReceiver, intentFilter); 
} 
@Override 
protected void onPause() { 
    // TODO Auto-generated method stub 
    super.onPause(); 
    // Unregister the receiver 
    unregisterReceiver(downloadReceiver); 
} 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_download_packages, 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); 
} 
public void back(View view) 
{ 
    finish(); 
} 
public void Create(View view) 
{ 
    String newFolder = "/voice"; 
    String extStorageDirectory = Environment.getExternalStorageDirectory().toString(); 
    File myNewFolder = new File(ext[enter image description here][1]StorageDirectory + newFolder); 
    myNewFolder.mkdir(); 
} 

}

這是圖像

+0

而不是「多個TextView」,使用ListView。或者一個RecyclerView。 –

+0

我有多個主題和它的文件下載。在spinnerview中,我列出了要選擇的主題,並且當用戶單擊主題的所有部分時,都會出現在桌面上供下載。現在我想選擇一個包含它的所有主題的包,並且當用戶選擇這個特定的包時,主題的名稱及其部分應該出現在該佈局中。 – Shashi

+0

Shashi

回答

0

創造相對佈局對象從它佈局ID,那麼你可以將其添加爲低於

relativeLayout = findViewById(R.id.yourRelativeLayoutId); 
relativeLayout.addView(yourView); 
0

附加一個TextView到RelativeLayout的非常簡單。 只是用

TextView textview = new TextView(this); 
textview.setText("Text"); 
relativelayoutobject.addView(textview); 

設置位置使用 textview.setLayoutParams(thelayoutparams)

但是如果你使用大數據庫,請使用「TableLayout」,而不是你的方法由於性能方面的原因。

+0

@Rotwang,當然tablelayout。 – Vyacheslav

+0

我已經使用表佈局 – Shashi

+0

你說關於佈局。寫yiur代碼 – Vyacheslav

0

列表視圖或recyclerview是最好的做法,但只要你想使用TextView的,你可以在你的代碼中使用這樣的:

RelativeLayout relativeLayout = 
     (RelativeLayout) findViewById(R.id.rootlayout); 

    TextView textView = new TextView(this); 
    textView.setText("Hey, I am TextView"); 

    relativeLayout.addView(textView); 
+0

我會嘗試,謝謝 – Shashi

+0

你知道我需要添加至少6個文字瀏覽 – Shashi

0

在xml佈局中定義相對佈局。像這樣添加多個textview編程盟友 -

RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.relativeLayout); 
     //use a for loop to define multiple textView in RelativeLayout 
     //length is no. of textView you required 
     for (int i = 0; i < length; i++) { 
      TextView tv = new TextView(relativeLayout.getContext()); 
      tv.setText("Text from sqlite database"); 
      tv.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
      relativeLayout.addView(tv); 
     } 
+0

你很矛盾 – Shashi

+0

是你的問題解決了嗎? – saty

+0

是的,但我仍然有問題從這些textviews檢索數據從sqlite – Shashi