# 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:
