如何在 kotlin Android Studio 中快速调用 API
How to Call Fast API in kotlin Andriod Studio
我正在做一个项目,我在其中创建了一个 API,我可以在其中根据用户输入的位置从 Twitter 获取趋势。现在我想在 android 中调用 API。
看起来像:
我想在这里显示 GET 趋势:
获取趋势布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
tools:context=".trends">
<TextView
android:id="@+id/profiletitle"
android:layout_width="310dp"
android:layout_height="46dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="52dp"
android:fontFamily="monospace"
android:text="Today's Trends"
android:textAlignment="center"
android:textColor="@color/Twit"
android:textSize="25sp"
android:textStyle="bold"
tools:layout_editor_absoluteX="48dp"
tools:layout_editor_absoluteY="29dp" />
<EditText
android:id="@+id/locationid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginStart="105dp"
android:layout_marginTop="133dp"
android:ems="10"
android:hint="Enter your country"
android:inputType="textPersonName" />
<Button
android:id="@+id/getdata"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="216dp"
android:text="Get Trends" />
<FrameLayout
android:id="@+id/showtrends"
android:layout_width="360dp"
android:layout_height="492dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="310dp">
</FrameLayout>
</RelativeLayout>
我需要你的帮助来告诉我如何在科特林中做到这一点。我已经搜索了很多次,但未能找到可以将我的 Country 参数 从 andriod 传递到 API 然后获取的解决方案json 个结果。 非常感谢您的回答。
我要显示的响应正文:
请尝试一次并根据您的要求进行 JSON 和其他相关更改,例如每次点击时清除文本视图等...-
XML 文件
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:gravity="center|top"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="52dp"
android:fontFamily="monospace"
android:text="Today's Trends"
android:textAlignment="center"
android:textSize="25sp"
android:textStyle="bold" />
<EditText
android:id="@+id/locationid"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:ems="10"
android:hint="Enter your country"
android:inputType="text" />
<Button
android:id="@+id/getData"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:text="Get Trends" />
<TextView
android:id="@+id/showData"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:textSize="15sp" />
</androidx.appcompat.widget.LinearLayoutCompat>
Class 文件-
public class MainActivity4 extends AppCompatActivity implements View.OnClickListener {
Button getData;
EditText locationId;
TextView showData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main4);
locationId = findViewById(R.id.locationid);
showData = findViewById(R.id.showData);
getData = findViewById(R.id.getData);
getData.setOnClickListener(this);
}
@SuppressLint("SetTextI18n")
@Override
public void onClick(View view) {
int id = view.getId();
if (id == R.id.getData) {
String location = locationId.getText().toString().trim();
showData.setText("");
if (location.isEmpty()) {
Toast.makeText(getApplicationContext(), "Please add Country", Toast.LENGTH_LONG).show();
return;
}
RequestQueue requestQueue;
requestQueue = Volley.newRequestQueue(getApplicationContext());
@SuppressLint("SetTextI18n") JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET,
"https://twtsentiment-fastapi.herokuapp.com/get_trend?loc=" + location,
null, response -> {
Log.d("Response", response.toString());
try {
JSONArray jsonArray = response.getJSONArray("Trends");
for (int i = 0; i < jsonArray.length(); i++) {
showData.append("\n "+jsonArray.optString(i)+"\n ");
Log.d("TEXT", jsonArray.optString(i));
}
} catch (JSONException e) {
e.printStackTrace();
}
}, error -> Log.d("myapp", "something went wrong"));
requestQueue.add(jsonObjectRequest);
}
}
}
我正在做一个项目,我在其中创建了一个 API,我可以在其中根据用户输入的位置从 Twitter 获取趋势。现在我想在 android 中调用 API。
看起来像:
我想在这里显示 GET 趋势: 获取趋势布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
tools:context=".trends">
<TextView
android:id="@+id/profiletitle"
android:layout_width="310dp"
android:layout_height="46dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="52dp"
android:fontFamily="monospace"
android:text="Today's Trends"
android:textAlignment="center"
android:textColor="@color/Twit"
android:textSize="25sp"
android:textStyle="bold"
tools:layout_editor_absoluteX="48dp"
tools:layout_editor_absoluteY="29dp" />
<EditText
android:id="@+id/locationid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginStart="105dp"
android:layout_marginTop="133dp"
android:ems="10"
android:hint="Enter your country"
android:inputType="textPersonName" />
<Button
android:id="@+id/getdata"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="216dp"
android:text="Get Trends" />
<FrameLayout
android:id="@+id/showtrends"
android:layout_width="360dp"
android:layout_height="492dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="310dp">
</FrameLayout>
</RelativeLayout>
我需要你的帮助来告诉我如何在科特林中做到这一点。我已经搜索了很多次,但未能找到可以将我的 Country 参数 从 andriod 传递到 API 然后获取的解决方案json 个结果。 非常感谢您的回答。
我要显示的响应正文:
请尝试一次并根据您的要求进行 JSON 和其他相关更改,例如每次点击时清除文本视图等...-
XML 文件
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:gravity="center|top"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="52dp"
android:fontFamily="monospace"
android:text="Today's Trends"
android:textAlignment="center"
android:textSize="25sp"
android:textStyle="bold" />
<EditText
android:id="@+id/locationid"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:ems="10"
android:hint="Enter your country"
android:inputType="text" />
<Button
android:id="@+id/getData"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:text="Get Trends" />
<TextView
android:id="@+id/showData"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:textSize="15sp" />
</androidx.appcompat.widget.LinearLayoutCompat>
Class 文件-
public class MainActivity4 extends AppCompatActivity implements View.OnClickListener {
Button getData;
EditText locationId;
TextView showData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main4);
locationId = findViewById(R.id.locationid);
showData = findViewById(R.id.showData);
getData = findViewById(R.id.getData);
getData.setOnClickListener(this);
}
@SuppressLint("SetTextI18n")
@Override
public void onClick(View view) {
int id = view.getId();
if (id == R.id.getData) {
String location = locationId.getText().toString().trim();
showData.setText("");
if (location.isEmpty()) {
Toast.makeText(getApplicationContext(), "Please add Country", Toast.LENGTH_LONG).show();
return;
}
RequestQueue requestQueue;
requestQueue = Volley.newRequestQueue(getApplicationContext());
@SuppressLint("SetTextI18n") JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET,
"https://twtsentiment-fastapi.herokuapp.com/get_trend?loc=" + location,
null, response -> {
Log.d("Response", response.toString());
try {
JSONArray jsonArray = response.getJSONArray("Trends");
for (int i = 0; i < jsonArray.length(); i++) {
showData.append("\n "+jsonArray.optString(i)+"\n ");
Log.d("TEXT", jsonArray.optString(i));
}
} catch (JSONException e) {
e.printStackTrace();
}
}, error -> Log.d("myapp", "something went wrong"));
requestQueue.add(jsonObjectRequest);
}
}
}