# Android ## Add permission for connect to net set in manifest ```cpp <uses-permission android:name="android.permission.INTERNET"/> ``` ## Add permission for connect to http set in manifest ```cpp <application android:usesCleartextTraffic="true" > ``` ## Add permission for old version set in build.gradle ```cpp minSdkVersion 24 ``` ## Connect Android to API *text =>save json(String) from API ```cpp void connect(){ new Thread(new Runnable() { @Override public void run() { try { URL url=new URL("http://192.168.88.143:90/api/getvalue"); HttpURLConnection httpURLConnection=(HttpURLConnection) url.openConnection(); try { BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream())); StringBuilder stringBuilder=new StringBuilder(); String str; while ((str=bufferedReader.readLine())!=null){ stringBuilder.append(str).append("\n"); } text=stringBuilder.toString(); }catch (Exception e){ }finally { httpURLConnection.disconnect(); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }).start(); } ``` #### get JsonArray `JSONArray jsonArray=new JSONArray(text);` #### getjsonObject ```cpp for(int i=0;i<jsonArray.length();i++) JSONObject jsonObject=jsonArray.getJSONObject(i); ``` ## Global Variable Put Variable on application ```cpp <application android:name=".Values"> ``` ```cpp public class Values extends Application { private String Name; private int Actype; public void setName(String name){ Name=name; } public void setactype(int actype){ Actype=actype; } public String getName(){ return Name; } public int getActype(){ return Actype; } } ``` `Values values=(Values)getApplicationContext();` `values.setName();` `values.getName();` ## Custom list and set click event(Create Alterdialog) ```cpp public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView lv1=findViewById(R.id.lv1); Button btn1=findViewById(R.id.btn1); final String[] str1={"A","B","C","D","E","F","G"}; final String[] str2={"1","2","3","4","5","6","7"}; adapt adapt=new adapt(this); adapt.getString(str1,str2); lv1.setAdapter(adapt); lv1.setOnItemClickListener(new AdapterView.OnItemClickListener() { int[] imglist={R.drawable.p1,R.drawable.p2,R.drawable.p3,R.drawable.p4,R.drawable.p5,R.drawable.p6,R.drawable.p7}; @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //Create AlterDlalog AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); LayoutInflater inflater = MainActivity.this.getLayoutInflater(); View myview=inflater.inflate(R.layout.mylayout2,null); TextView tv31=myview.findViewById(R.id.tv31); tv31.setText(str1[position]); TextView tv32=myview.findViewById(R.id.tv32); tv32.setText(str2[position]); ImageView imgv31=myview.findViewById(R.id.imgv31); imgv31.setImageResource(imglist[position]); builder.setView(myview); AlertDialog dialog = builder.create(); dialog.show(); } }); } } class adapt extends BaseAdapter{ int[] imglist={R.drawable.p1,R.drawable.p2,R.drawable.p3,R.drawable.p4,R.drawable.p5,R.drawable.p6,R.drawable.p7}; String[] str1; String[] str2; Context context; LayoutInflater layoutInflater; public adapt(Context c) { context=c; layoutInflater = LayoutInflater.from(c); } public void getString(String[] Str1,String[] Str2){ str1=Str1; str2=Str2; } @Override public int getCount() { return str1.length; } @Override public Object getItem(int position) { return str1[position]; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { convertView = layoutInflater.inflate(R.layout.mylayout,null); TextView tv1=convertView.findViewById(R.id.tv21); TextView tv2=convertView.findViewById(R.id.tv22); ImageView imgv=convertView.findViewById(R.id.imgv21); tv1.setText(str1[position]); tv2.setText(str2[position]); imgv.setImageResource(imglist[position]); return convertView; } } ``` # Layout 顯示的文字為致中對齊: `android:gravity="center"` 在VIEW上的顯示為置中: `android:layout_gravity="center"` padding & Margin: ![](https://i.imgur.com/dPwjeMR.png)