Android 遠程連接數據庫。。。。。


本來是 6.0.6  換成mysql 5.1.14 驅動ok。。。。

將方法 放在 new Thread() 解決。。。。。

只能在主線程繪制ui。。。。

解決辦法。。。
子Thread 獲取數據后,將繪制ui代碼放到Handler.post中執行

 

 

代碼----

package com.example.administrator.demo1;

import android.os.Handler;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.AttributeSet;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.TabHost;
import android.widget.TabWidget;
import android.widget.TextView;
import android.widget.Toast;

import org.whm.db.DbUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.jar.Attributes;

public class MainActivity extends AppCompatActivity {

    //鈎子線程
    Handler handler = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // Example of a call to a native method
        //TextView tv = (TextView) findViewById(R.id.tabhost);
        // tv.setText(stringFromJNI());
        TabHost tabHost = (TabHost) findViewById(R.id.tabhost);
        tabHost.setup();


//        FrameLayout frameLayout = (FrameLayout) findViewById(R.id.tabcontent);
//        int childCount = frameLayout.getChildCount();
        LinearLayout l1 = (LinearLayout) findViewById(R.id.tab1);
        LinearLayout l2 = (LinearLayout) findViewById(R.id.tab2);

        handler = new Handler();

        //在lambda中盡量不要拋出異常。。。。
        new Thread(() -> {
            List<Map<String, Object>> list = getData(l1);
            handler.post(new Thread(() -> {
                darwView(list, l1);
            }));
        }).start();


        TabHost.TabSpec tabSpec1 = tabHost.newTabSpec("tabSpec1").setIndicator("視頻").setContent(R.id.tab1);
        TabHost.TabSpec tabSpec2 = tabHost.newTabSpec("tabSpec2").setIndicator("直播").setContent(R.id.tab2);


        tabHost.addTab(tabSpec1);
        tabHost.addTab(tabSpec2);


    }

    /**
     * A native method that is implemented by the 'native-lib' native library,
     * which is packaged with this application.
     */
    public native String stringFromJNI();


    //從遠程服務器獲取數據
    private List<Map<String, Object>> getData(LinearLayout l) {
        List<Map<String, Object>> list = null;
        try {
            list = DbUtils.execQuery("select * from video", null);
        } catch (Exception e) {
            e.printStackTrace();
            Toast.makeText(getApplicationContext(), "發生了錯誤", Toast.LENGTH_LONG).show();
        }
        return list;

    }


    //繪制ui
    private void darwView(List<Map<String, Object>> list, LinearLayout view) {
        list.forEach((map) -> {
            TextView tv = new TextView(getApplicationContext());
            tv.setText((String) map.get("title"));
            view.addView(tv);
        });
    }


    // Used to load the 'native-lib' library on application startup.
    static {
        System.loadLibrary("native-lib");
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM