我有以下改造单身人士:
interface MyAPI
{
@GET("/data.json")
suspend fun fetchData() : Call<MyResponse>
companion object
{
private val BASE_URL = "http://10.0.2.2:8080/"
fun create(): MyAPI
{
val gson = GsonBuilder()
.setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
.create()
val retrofit = Retrofit.Builder()
.addConverterFactory( GsonConverterFactory.create( gson ) )
.baseUrl( BASE_URL )
.build()
return retrofit.create( MyAPI::class.java )
}
}
}
Run Code Online (Sandbox Code Playgroud)
MyResponse.kt
data class MyResponse(
val listOfData: List<DataEntity>
)
Run Code Online (Sandbox Code Playgroud)
数据实体.kt
data class DataEntity(
@SerializedName("name")
val fullName: String
}
Run Code Online (Sandbox Code Playgroud)
我通过以下方式从 ModelView 调用代码:
viewModelScope.launch {
try {
val webResponse = MyAPI.create().fetchData().await()
Log.d( tag, webResponse.toString() ) …Run Code Online (Sandbox Code Playgroud) 我有一个 RecycleView,其中显示了一个项目列表。我为 RecyclerView 指定默认动画师,如下所示:
recyclerView.setItemAnimator( new DefaultItemAnimator() );
Run Code Online (Sandbox Code Playgroud)
一切都很好,但我想使用我自己的自定义动画来添加/删除/更新列表中的元素。
我定义了一个自定义动画类,如下所示:
public class MyAnimator extends RecyclerView.ItemAnimator {
@Override
public boolean animateDisappearance(@NonNull RecyclerView.ViewHolder viewHolder, @NonNull ItemHolderInfo preLayoutInfo, @Nullable ItemHolderInfo postLayoutInfo) {
return false;
}
@Override
public boolean animateAppearance(@NonNull RecyclerView.ViewHolder viewHolder, @Nullable ItemHolderInfo preLayoutInfo, @NonNull ItemHolderInfo postLayoutInfo) {
return false;
}
@Override
public boolean animatePersistence(@NonNull RecyclerView.ViewHolder viewHolder, @NonNull ItemHolderInfo preLayoutInfo, @NonNull ItemHolderInfo postLayoutInfo) {
return false;
}
@Override
public boolean animateChange(@NonNull RecyclerView.ViewHolder oldHolder, @NonNull RecyclerView.ViewHolder newHolder, @NonNull ItemHolderInfo preLayoutInfo, @NonNull ItemHolderInfo postLayoutInfo) { …Run Code Online (Sandbox Code Playgroud) 我正在使用Win32 API和_beginthreadex调用以下列方式运行线程:
struct StructItem
{
std::string title;
int amount;
};
StructItem structItems[33];
unsigned int id;
HANDLE thread = (HANDLE)_beginthreadex(NULL, 0, my_thread, (void*)structItems, 0, &id);
Run Code Online (Sandbox Code Playgroud)
这是我的主题:
unsigned int __stdcall my_thread(void *p)
{
for (int i = 0; i < 20; i++)
{
// todo: print struct.title
Sleep(1000);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
据我所知,*p是指向我的结构列表的指针,因为我将它们传递给_beginthreadex调用中的第4个参数,但我无法理解如何转换*p以便我可以访问数组线程内的结构?